<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.yuiblog.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.yuiblog.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.3.3" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">

<channel>
	<title>Yahoo! User Interface Blog » Design</title>
	<link>http://yuiblog.com/blog</link>
	<description>News and Artilces about Designing and Developing with Yahoo! Libraries.</description>
	<pubDate>Thu, 15 May 2008 15:10:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.yuiblog.com/yuiblog/design" type="application/rss+xml" /><item>
		<title>Pattern-mining call for proposals: Rich interaction (web 2.0) patterns</title>
		<link>http://yuiblog.com/blog/2008/03/28/pattern-mining/</link>
		<comments>http://yuiblog.com/blog/2008/03/28/pattern-mining/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 23:30:53 +0000</pubDate>
		<dc:creator>Christian Crumlish</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[design patterns]]></category>

		<category><![CDATA[europe]]></category>

		<category><![CDATA[mining]]></category>

		<category><![CDATA[pattern mining]]></category>

		<category><![CDATA[patterns]]></category>

		<category><![CDATA[user experience]]></category>

		<category><![CDATA[web 2.0]]></category>

		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2008/03/28/pattern-mining/</guid>
		<description><![CDATA[
Dragos Manolescu from Microsoft Live Labs and Joe Yoder from The Refactory are organizing a pattern-mining workshop at TOOLS 2008 Europe, July 5-6 (dates still to be confirmed) in Zurich, Switzerland. I&#8217;ve agreed to be on the program committee to help review proposals and advice. 
In their own words:
Web 2.0 features are now commonplace &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.live.com/Web+20+Pattern+Mining+Workshop.aspx"><img src='http://www.yuiblog.com/blog/wp-content/uploads/2008/03/web20patterns.jpg' alt="Tim OReilly's web 2.0 patterns meme map" width="500" height="375"></a></p>
<p>Dragos Manolescu from Microsoft Live Labs and Joe Yoder from The Refactory are organizing a <a href="http://labs.live.com/Web+20+Pattern+Mining+Workshop.aspx">pattern-mining workshop</a> at <a href="http://tools.ethz.ch/workshops.html">TOOLS 2008 Europe</a>, July 5-6 (dates still to be confirmed) in Zurich, Switzerland. I&#8217;ve agreed to be on the program committee to help review proposals and advice. </p>
<p>In their own words:</p>
<blockquote><p>Web 2.0 features are now commonplace &mdash; blogs, wikis, RSS feeds, social bookmarking and the like are almost everywhere you look online.  Now that these technologies are maturing, what are their common problems and challenges? How are these problems being solved? What similar challenges do Web 2.0 developers face, and how can they leverage the most common solutions?  Here’s your chance to gather with other professionals facing the same issues and work together to identify solutions.</p></blockquote>
<p>We are looking for system experts, domain experts, and pattern experts to come together, bring examples, detect commonalities, and write patterns. Proposals are due May 5.</p>
<p>See the <a href="http://labs.live.com/Web+20+Pattern+Mining+Workshop.aspx">call for proposals</a> for more details.</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=srFE5YF"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=srFE5YF" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=ngV9LbF"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=ngV9LbF" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=Ie8QIaF"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=Ie8QIaF" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=fBeVV3f"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=fBeVV3f" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2008/03/28/pattern-mining/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Automatic conversion from simple, accessible data tables to YUI Charts</title>
		<link>http://yuiblog.com/blog/2008/01/17/tables-and-charts/</link>
		<comments>http://yuiblog.com/blog/2008/01/17/tables-and-charts/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 16:10:00 +0000</pubDate>
		<dc:creator>Christian Heilmann</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[accessibility]]></category>

		<category><![CDATA[charts]]></category>

		<category><![CDATA[tables]]></category>

		<category><![CDATA[visualizing data]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2008/01/17/tables-and-charts/</guid>
		<description><![CDATA[


About the Author: Christian Heilmann is the author of Beginning JavaScript with DOM Scripting and Ajax. He has worked in web development for almost 9 years for several agencies and .coms and is currently a lead developer at Yahoo! in England.  Christian is a frequent speaker on the conference circuit in the UK and [...]]]></description>
			<content:encoded><![CDATA[<link rel="stylesheet" type="text/css" href="http://yuiblog.com/assets/charttable/chartsstyles.css">
<div class="interview">
<div class="intro">
<p><img src="http://yuiblog.com/assets/heilmann.jpg" width="300" height="225" hspace="5" vspace="5" align="right"><strong>About the Author:</strong> Christian Heilmann is the author of <em><a href="http://yuiblog.com/blog/2006/06/27/heilmann-excerpt/">Beginning JavaScript with DOM Scripting and Ajax</a></em>. He has worked in web development for almost 9 years for several agencies and .coms and is currently a lead developer at Yahoo! in England.  Christian is a frequent speaker on the conference circuit in the UK and Europe; you can find some of his writing <a href="http://yuiblog.com/blog/2007/01/17/event-plan/">here on YUIBlog</a> as well as on his personal blog at <a href="http://wait-till-i.com">http://wait-till-i.com</a>.</p>
</div>
<p>Charts are a great idea to make rows and rows of boring numbers easier to understand and to take in &mdash; for people that can see them. However, not all of your site&#8217;s visitors can see and you&#8217;ll also want to keep information you offer available for search engines. There are a lot of libraries on the web that allow you to create charts, but not many take this use case into consideration.</p>
<h2>In praise of data tables</h2>
<p>This is where data tables come into play. (<strong>Note:</strong> For the purposes of this article, I&#8217;m referring to pure HTML tables &mdash; not to rich UI controls like Jenny Han Donnelly&#8217;s <a href="http://developer.yahoo.com/yui/datatable/">YUI DataTable Control</a>.)  They are the perfect data construct in HTML as they are  available both for people that can see and those who can&#8217;t. Assistive technologies like screen readers offer a way to navigate tables and to read their information row-by-row and cell-by-cell. All you need to do to please everyone is to use the correct markup (including a few attributes you might not have used yet):</p>
<pre><code>&lt;table summary=&quot;Results of a survey of which animals people would like to see more on YDN&quot;&gt;
  &lt;caption&gt;What animals would you like to see more?&lt;/caption&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&quot;col&quot;&gt;Animal&lt;/th&gt;
      &lt;th scope=&quot;col&quot;&gt;Requests&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Kittens&lt;/td&gt;
      &lt;td&gt;45331&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Puppies&lt;/td&gt;
      &lt;td&gt;32323&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Elephants&lt;/td&gt;
      &lt;td&gt;12345&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Badgers&lt;/td&gt;
      &lt;td&gt;6546&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Sharks (without lasers)&lt;/td&gt;
      &lt;td&gt;223&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Sharks (with lasers)&lt;/td&gt;
      &lt;td&gt;2323&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</code></pre>
<p>The <code>summary</code> attribute tells assistive technology what this table is about and the <code>caption</code> shows up for all users. The <code>th</code> elements define what cells are headers and the <code>scope</code> attribute applies them to all the data cells they are connected to. In this case it means that &#8220;animal&#8221; gets read out before each animal and &#8220;requests&#8221; before each number. This means that even a visitor who cannot see will still know in row five what the information is about. All in all the table renders as:</p>
<table summary="Results of a survey of which animals people would like to see more on YDN">
<caption>What animals would you like to see more?</caption>
<thead>
<tr>
<th scope="col">Animal</th>
<th scope="col">Requests</th>
</tr>
</thead>
<tbody>
<tr>
<td>Kittens</td>
<td>45331</td>
</tr>
<tr>
<td>Puppies</td>
<td>32323</td>
</tr>
<tr>
<td>Elephants</td>
<td>12345</td>
</tr>
<tr>
<td>Badgers</td>
<td>6546</td>
</tr>
<tr>
<td>Sharks (without lasers)</td>
<td>223</td>
</tr>
<tr>
<td>Sharks (with lasers)</td>
<td>2323</td>
</tr>
</tbody>
</table>
<p>Easy to understand, but not too pretty. And it can get boring.  How about we use this information and create a tasty pie chart like the following (click on the image below to see the working example in action)?</p>
<p><a href="http://yuiblog.com/assets/charttable/chartsexample.html"><img src="http://yuiblog.com/assets/charttable/chart-table.png" alt="The accessible table enhanced with a pie chart (image; click through to see working example)" width="414" height="536" border="0"></a></p>
<h2>Using table data to automatically generate charts</h2>
<p>In order to have the table be preceeded by a pie chart like this all you need is to add two scripts at the end of the document body and a class called <code>yui-table</code> to the table itself. For example:</p>
<pre><code>&lt;table class=&quot;yui-table&quot; summary=&quot;Results of a survey of what browser people love&quot;&gt;
  &lt;caption&gt;What browser do you love?&lt;/caption&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th scope=&quot;col&quot;&gt;Browser&lt;/th&gt;
      &lt;th scope=&quot;col&quot;&gt;Lovers&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;MSIE&lt;/td&gt;
      &lt;td&gt;221&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Firefox&lt;/td&gt;
      &lt;td&gt;516&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Opera&lt;/td&gt;
      &lt;td&gt;312&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Safari&lt;/td&gt;
      &lt;td&gt;100&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Omniweb&lt;/td&gt;
      &lt;td&gt;30&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Lynx&lt;/td&gt;
      &lt;td&gt;4&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;script src=&quot;http://yui.yahooapis.com/2.4.1/build/yuiloader/yuiloader-beta-min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;tablestoyuicharts.js&quot;&gt;&lt;/script&gt;</code></pre>
<p>This will show in a browser with the latest Flash plugin like this:</p>
<p><a href="http://yuiblog.com/assets/charttable/chartsexample.html"><img src="http://yuiblog.com/assets/charttable/chart-table2.png" alt="The accessible table enhanced with a pie chart (image; click through to see working example)" width="414" height="527" border="0"></a></p>
<p>You can define the size of the chart in CSS by defining a width and height for each div element with a class of <code>yuichartfromtable</code>:</p>
<pre><code>div.yuichartfromtable{
  width:300px;
  height:300px;
  margin:0 auto;
}
</code></pre>
<p>As for the scripts: the first script is the <a href="http://developer.yahoo.com/yui/loader">YUI Loader Utility</a> which allows you to pull in YUI components on-demand. This is great, as you don&#8217;t need to add lots and lots of <code>script</code> elements but let the YUI Loader figure out what it needs. You can <a href="http://yuiblog.com/assets/charttable/tablestoyuicharts.js">download the second script here</a>; if you care to know what is going on with it, check the following section. If you just want to use the script, then you&#8217;re done :-).</p>
<h2>How does this work?</h2>
<p>The script to turn all tables with the class <code>yui-table</code> into charts is quite short, as it uses the newer YUI components that take a lot of the heavy lifting off you, especially the table-to-dataset conversion which is done by the <a href="http://developer.yahoo.com/yui/datasource">YUI DataSource Utility</a>. The full script is this:</p>
<pre><code>
var tablestoYUIchartsplease = new YAHOO.util.YUILoader({
  require: ['charts'],
  onSuccess: function(){
    var tables = YAHOO.util.Dom.getElementsByClassName('yui-table','table');
    YAHOO.util.Dom.batch(tables,function(o){
      var chartcontainer = document.createElement('div');
      YAHOO.util.Dom.addClass(chartcontainer,'yuichartfromtable');
      YAHOO.util.Dom.insertBefore(chartcontainer,o);
      var data = new YAHOO.util.DataSource(o);
      data.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
      data.responseSchema = {fields:['response','count']};
      YAHOO.widget.Chart.SWFURL = 'http://developer.yahoo.com/yui/build/charts/assets/charts.swf?_yuiversion=2.4.1';
      var chart = new YAHOO.widget.PieChart(chartcontainer,data,{
        categoryField:'response',
        dataField:'count',
        expressInstall:'http://developer.yahoo.com/yui/build/charts/assets/expressinstall.swf'
      });
    });
  }
});
if(document.location.toString().indexOf('http')!==-1){
  tablestoYUIchartsplease.insert();
}</code></pre>
<p>Let&#8217;s chunk it up and see what each section does:</p>
<pre><code>var tablestoYUIchartsplease = new YAHOO.util.YUILoader({
  require: ['charts'],
  onSuccess: function(){
</code></pre>
<p>First up, we let the <a href="http://developer.yahoo.com/yui/loader">YUI Loader</a> do its magic: We instantiate a new loader, tell it we need the <a href="http://developer.yahoo.com/yui/charts">YUI Charts Control</a> and wait for the different script nodes to be generated and the components to be loaded before we continue. The loader tells us all is OK by firing the <code>onSuccess</code> event, which we use to execute an anonymous function that does all the other work.</p>
<pre><code>    var tables = YAHOO.util.Dom.getElementsByClassName('yui-table','table');
    YAHOO.util.Dom.batch(tables,function(o){
</code></pre>
<p>We use <a href="http://developer.yahoo.com/yui/dom">the YUI Dom Collection</a> to get all tables with the correct class and apply a function to each of these tables using the <code>batch</code> method. The method sends the current table as the parameter <code>o</code> to this function.</p>
<pre><code>      var chartcontainer = document.createElement('div');
      YAHOO.util.Dom.addClass(chartcontainer,'yuichartfromtable');
      YAHOO.util.Dom.insertBefore(chartcontainer,o);
</code></pre>
<p>We create a new <code>div</code> element, give it a class of <code>yuichartfromtable</code> (to allow for styling) and insert the new element into the document before the table.</p>
<pre><code>      var data = new YAHOO.util.DataSource(o);
      data.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
      data.responseSchema = {fields:['response','count']};
</code></pre>
<p>Then we allow the rather new <a href="http://developer.yahoo.com/yui/datasource">YUI DataSource Utility</a>  to flex its binary muscles. While this is meant to wade through external data sources and JavaScript arrays for you, it also allows for a <code>responseType</code> of HTML table, which means it converts a table to a JavaScript object you can work with. As we&#8217;re dealing here with a really simple table, all we need to do in terms of <code>responseSchema</code> is to define two fields: a <code>response</code> (what) and a <code>count</code> (how many). These three lines are all you need to convert the table to a dataset that both the <a href="http://developer.yahoo.com/yui/charts">YUI Charts Control</a> and the <a href="http://developer.yahoo.com/yui/datatable">YUI DataTable Control</a> can use.</p>
<pre><code>      YAHOO.widget.Chart.SWFURL = 'http://developer.yahoo.com/yui/build/charts/assets/charts.swf?_yuiversion=2.4.1';
      var chart = new YAHOO.widget.PieChart(chartcontainer,data,{
        categoryField:'response',
        dataField:'count',
        expressInstall:'http://developer.yahoo.com/yui/build/charts/assets/expressinstall.swf'
      });
</code></pre>
<p>Time for pie: we define the URL of the Flash movie that draws the pie and instantiate a new pie chart. We send the <code>div</code> we created earlier as the container, the <code>data</code> we retrieved from the table as the data to display and define a configuration object. This object has the <code>response</code> field as the categories and the <code>count</code> field as the data. The <code>expressinstall</code> defines what Flash movie to show if the visitor doesn&#8217;t have the right Flash version.</p>
<pre><code>    });
  }
});
if(document.location.toString().indexOf('http')!==-1){
  tablestoYUIchartsplease.insert();
}</code></pre>
<p>Almost done. All the script now needs to do is to call the <code>insert()</code> method of the <a href="http://developer.yahoo.com/yui/yuiloader/">YUI Loader</a> &mdash; that gets the ball rolling. I&#8217;ve enclosed the method in an <code>if</code> statement that checks if the HTML is called up via HTTP or not as the Charts Control needs HTTP to work.</p>
<h2>Summary</h2>
<p>That&#8217;s all you need to do to progressively enhance an accessible data table to turn them into a pie chart using the YUI Charts Control. We can extend this example to allow for several types of charts and to turn the tables into sortable data tables quite easily. If there is interest, drop us a comment.</p>
</div>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=9xFKVFD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=9xFKVFD" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=NdZyGYD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=NdZyGYD" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=nmoAFGD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=nmoAFGD" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=yb1jQAd"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=yb1jQAd" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2008/01/17/tables-and-charts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Carousel Design Pattern</title>
		<link>http://yuiblog.com/blog/2008/01/15/carousel-pattern/</link>
		<comments>http://yuiblog.com/blog/2008/01/15/carousel-pattern/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 18:17:13 +0000</pubDate>
		<dc:creator>Christian Crumlish</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[animation]]></category>

		<category><![CDATA[carousel]]></category>

		<category><![CDATA[design patterns]]></category>

		<category><![CDATA[images]]></category>

		<category><![CDATA[pattern]]></category>

		<category><![CDATA[pattern library]]></category>

		<category><![CDATA[slide]]></category>

		<category><![CDATA[transition]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2008/01/15/carousel-pattern/</guid>
		<description><![CDATA[As the end of last year was winding up I spent some time tinkering with the open pattern library, in order to clear the way for our latest pattern release, <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=carousel">Carousel</a>. One reason why I needed to do this tinkering is that the Carousel pattern contains a few new fields in its data model. These are primarily elements that we have been including lately in our internal patterns that I wanted to find a way to promote to the public library.

But first, a little bit about the pattern. ]]></description>
			<content:encoded><![CDATA[<p><a href='http://developer.yahoo.com/ypatterns/pattern.php?pattern=carousel'><img src='http://www.yuiblog.com/blog/wp-content/uploads/2008/01/3d-carousel.thumbnail.jpg' alt='3-D carousel wireframe image' align="right" hspace="10" vspace="5"></a>As the end of last year was winding up I spent some time tinkering with the open pattern library, in order to clear the way for our latest pattern release, <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=carousel">Carousel</a>. One reason why I needed to do this tinkering is that the Carousel pattern contains a few new fields in its data model. These are primarily elements that we have been including lately in our internal patterns that I wanted to find a way to promote to the public library.</p>
<p>But first, a little bit about the pattern. Folks inside and outside of Yahoo! have been asking us for a carousel patterns since before I got here (and you all want carousel code from YUI too &mdash; <a href="http://tech.groups.yahoo.com/group/ydn-javascript/message/23851">we hear you</a>). It&#8217;s been possible to make a carousel using the <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=slide">Slide Transition</a> pattern and associated YUI code, as Bill Scott <a href="http://billwscott.com/carousel/">demonstrated</a> quite some time ago, but the detailed do&#8217;s and don&#8217;ts of effective carousels were still left up to the individual developers.</p>
<p><a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=carousel"><img src="http://yuiblog.com/assets/carousel-pattern.png" width="300" height="294" align="right" hspace="10" vspace="10" alt="The Carousel Pattern page on the Pattern Library site"></a>Internally here at Yahoo! we had a several partial carousel guidelines (carousels are used extensively across the network, especially in the Media Group sites) but no consistent standard. This past summer a large number of user experience designers carried on a week-long discussion &mdash; sharing experience and insights &mdash; and hashed out the major issues involved with carousel design. After that I gathered a group of interested designers and developers and started shaping those comments into a sketchy pattern draft.</p>
<p><a href="http://yuiblog.com/blog/2007/10/02/challenges-of-interface-design-for-mobile-devices/">Lucas Pettinati</a>, a designer on the YDN team who also works closely with YUI, devoted a lot of time to sorting out the subtle details and possible variations on the basic carousel theme with me, and also cooked up some basic wireframe diagrams to help illustrate the possibilities. The draft pattern made its way through several review cycles and finally emerged ready to publish near the end of last year.</p>
<p>Why so much effort? It&#8217;s a good question. It&#8217;s certainly possible to describe a carousel in pattern format in a lot fewer words than we did. Both <a href="http://welie.com/patterns/showPattern.php?patternID=carrousel">Patterns in Interaction Design</a> and <a href="http://ui-patterns.com/pattern/Carousel">UI-patterns.com</a> manage to describe carousels in fairly simple terms (the latter even uses a Yahoo! carousel as its sensitizing example). </p>
<p>We felt that there were more subtle issues at work here than simply queuing up a bunch of images and allowing them to scroll into a viewport. You&#8217;ll be the judge of whether we were right, and as always we welcome feedback on the pattern.</p>
<p>One last note about the pattern format: I&#8217;ve added a new field, Special Cases, to the pattern format. We&#8217;ve used it internally for some time and I&#8217;m not sure why we haven&#8217;t used it in the open library. In the past that material sometimes made it into the solution or rationale or was left out. As with <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=votetopromote">Vote to Promote</a> I&#8217;ve also included a Pattern Gallery and have now made that a standard element in the pattern model.</p>
<p>Finally, I&#8217;ve added a few new headings to the links along the gutter of the pattern description: Other Examples, Wireframe Templates, and Similar Patterns in Other Libraries. Other Examples are examples from around the Web, outside of the Yahoo! network. Wireframe templates are downloadable stencils (currently in Omnigraffle and Visio XML format) that designers can use to create and position their carousels. Similar Patterns in Other Libraries are, well&#8230; need I explain?</p>
<p>Inside Yahoo! our designers always want stencils to work with just as our developers always want code. We are working on producing wireframe templates for all of our patterns, starting with the new ones. You&#8217;ll notice that we don&#8217;t yet have YUI code for the carousel pattern but as soon as we do I will of course add a link to it from the pattern entry.</p>
<p>So I spent the holidays tinkering with the JSON and PHP files that build the library and adding in the new fields without breaking all the old patterns. (OK, I broke them but then I fixed them but that&#8217;s what staging servers are for, right?) Now that the new year has rolled around I realized I had stealth-released the carousel pattern when I should really be shouting about the newest pattern to the rafters. A lot of people have worked hard on this and I&#8217;m proud of the result. I hope you find it useful. Let us know what you think.</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=b0ioSVD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=b0ioSVD" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=fYOFqcD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=fYOFqcD" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=4OB2ssD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=4OB2ssD" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=xT5fsgd"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=xT5fsgd" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2008/01/15/carousel-pattern/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An inside look at the Pattern Library</title>
		<link>http://yuiblog.com/blog/2007/12/07/pattern-library-brown-bag/</link>
		<comments>http://yuiblog.com/blog/2007/12/07/pattern-library-brown-bag/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 19:06:30 +0000</pubDate>
		<dc:creator>Christian Crumlish</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[YUI Theater]]></category>

		<category><![CDATA[brown bag]]></category>

		<category><![CDATA[christian crumlish]]></category>

		<category><![CDATA[design patterns]]></category>

		<category><![CDATA[hci]]></category>

		<category><![CDATA[pattern library]]></category>

		<category><![CDATA[patterns]]></category>

		<category><![CDATA[process]]></category>

		<category><![CDATA[theater]]></category>

		<category><![CDATA[video]]></category>

		<category><![CDATA[xian]]></category>

		<category><![CDATA[yahoo design pattern library]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2007/12/07/pattern-library-brown-bag/</guid>
		<description><![CDATA[As the third curator of Yahoo!&#8217;s Design Pattern Library I often receive a lot of thanks and praise from website designers and developers for the way we at Yahoo! have offered this resource to the world. I usually try to explain that much of the goodness happened before I came on board and that I [...]]]></description>
			<content:encoded><![CDATA[<p>As the third curator of Yahoo!&#8217;s <a href="http://developer.yahoo.com/ypatterns/">Design Pattern Library</a> I often receive a lot of thanks and praise from website designers and developers for the way we at Yahoo! have offered this resource to the world. I usually try to explain that much of the goodness happened before I came on board and that I can&#8217;t really take credit for it, but when my ego needs a boost I just smile and nod.</p>
<p>When Erin Malone and Matt Leacock and others first launched the internal pattern library, they presented a talk at the IA Summit, called <a href="http://www.boxesandarrows.com/view/implementing_a_pattern_library_in_the_real_world_a_yahoo_case_study">Implementing a Pattern Library in the Real World: A Case Study</a> (and subsequently the linked article on the same topic at Boxes and Arrows). Then Erin and Bill Scott took the library to the public on the Yahoo! Developer Network website and Bill Scott <strike>&#8220;</strike><em>enriched</em><strike>&#8220;</strike> the library with tons of Ajax-y goodness, closely tied to the <a href="http://developer.yahoo.com/yui">YUI Library</a>.</p>
<p>Since that time, I came on board and I&#8217;ve worked on reorganizing the library, updating the patterns, and shepherding a new generation of patterns through our internal refinement and review process, with an eye toward identifying useful social and openness patterns that we can share with the whole Web. So when people come up to me at conferences or find me on mailing lists for <a href="http://iainstitute.org/">information architects</a> and <a href="http://gamma.ixda.org/topics.php?topic=patterns">interaction designers</a> frequently they are curious about how the library has evolved in the years since it was founded, what our internal process looks like these days for writing, reviewing, approving, and rating patterns, and how we decide which ones to publish in the open library.</p>
<p>Recently, I gave a talk here at Yahoo! as part of our UED brown-bag series, called <a href="http://developer.yahoo.net/blogs/theater/archives/2007/12/ued_pattern_library_w_christian_crumlish.html">The Pattern Library Wants YOU!</a>, intended to update oldtimers on changes and improvements to our process and infrastructure and to orient new designers about the library, and of course to encourage people to get involved. Ricky Montalvo, our ace videographer for <a href="http://developer.yahoo.com/yui/theater/">YUI Theater</a> and YDN Theater, recorded my talk and edited it together with my slides, and we just spent a week or so removing any too-sensitive information and getting our friendly legal folks to sign off on releasing the talk to the public.</p>
<p>So, without further ado, here is the public version of my talk, which should answer a lot of those questions I&#8217;m hearing these days.</p>
<div>
<embed src='http://us.i1.yimg.com/cosmos.bcst.yahoo.com/player/FLVVideoSimple.swf' flashvars='id=5342962&#038;autoStart=0&#038;bw=0' type='application/x-shockwave-flash' width='400' height='300'></embed>
</div>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=LJfL3GC"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=LJfL3GC" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=5latn0C"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=5latn0C" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=H9rRNsC"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=H9rRNsC" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=vRuO2Lc"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=vRuO2Lc" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2007/12/07/pattern-library-brown-bag/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Challenges of Interface Design for Mobile Devices</title>
		<link>http://yuiblog.com/blog/2007/10/02/challenges-of-interface-design-for-mobile-devices/</link>
		<comments>http://yuiblog.com/blog/2007/10/02/challenges-of-interface-design-for-mobile-devices/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 21:36:50 +0000</pubDate>
		<dc:creator>Lucas Pettinati</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2007/10/02/challenges-of-interface-design-for-mobile-devices/</guid>
		<description><![CDATA[The single most important concept to master when designing mobile device interfaces is &#8220;context&#8221;. The context in which an application is used and the context of how information is input are both key issues; each must be understood before a well crafted design may be implemented. When these two notions of context are explored, it [...]]]></description>
			<content:encoded><![CDATA[<p>The single most important concept to master when designing mobile device interfaces is &#8220;context&#8221;. The context in which an application is used and the context of how information is input are both key issues; each must be understood before a well crafted design may be implemented. When these two notions of context are explored, it becomes clear that designing for a mobile device can lead to a solution that is worlds different than its desktop equivalent.</p>
<h3 id="context-of-use">Context of Use</h3>
<p>Mobile devices are excellent at connecting users to information; and while consumption of information is likely the largest segment of mobile device usage, interacting with a mobile device to perform important tasks is a usage segment that deserves significant attention. This is because generative work conducted on mobile devices tends to be tactical in nature and demands a sense of immediacy. Users have a very specific need and desire to accomplish their goal in the easiest and fastest way possible. This fact alone helps explain why mobile interfaces are designed the way they are:</p>
<ul>
<li>Feature sets are optimized to streamline common use cases</li>
<li>Use typography to show hierarchy and importance</li>
<li>Features are progressively displayed</li>
<li>Large buttons are used to make interactions actionable</li>
</ul>
<p>Let&#8217;s explore a mobile email client as an example of how these attributes are manifested.</p>
<h4 id="streamline-common-use-cases">Streamline Common Use Cases</h4>
<p>Whether you&#8217;re lounging at the beach, riding the subway, or at a client meeting, the need to access email on your mobile device is likely predicated by a sense immediacy. If at this point you thought &#8220;What about boredom?&#8221;, I&#8217;d like to remind you of the beach scenario. A complex interaction involving zooming, tiny check boxes, and the like is the last thing one needs. Several mobile email applications address this challenge by displaying an optimized interface that allows users to select an inbox or folder, view a list of messages, and then act on a specific message. Though this model may not be best when dealing with bulk actions, it simplifies the interaction to a primary use case and allows users to get the information they need. Once the user has access to the information being sought, additional options are contextually presented. </p>
<h4 id="show-hierarchy-and-importance">Show hierarchy and importance</h4>
<p>Instead of using a data table layout with dedicated columns for each piece of email meta data, the iPhone email interface groups sender, date, subject, and message status information into repeating units that make identifying a message a simple task. By varying font size, weight, color, and style, one is able to discretely communicate each morsel of information without having to label it. This not only reduces interface clutter but allows the data to speak for itself.</p>
<h4 id="progressively-display-features">Features are progressively displayed</h4>
<p>While performing bulk actions like flagging several messages is an extremely useful feature, it is probably not a primary activity performed on a mobile device. In the case of the iPhone, options to delete a message, reply, and move to a different folder are are only displayed when viewing a message. Taking this concept one step further, tapping the reply icon allows the user to specify if they wish to reply, reply all, or forward the message. By simplifying the mechanism for how one selects a message to a single click, and removing the ability select multiple messages, all features that deal with acting on a message are progressively disclosed in context of that message.</p>
<h4 id="use-large-buttons">Large buttons are used to make interactions actionable</h4>
<p>When you use a laptop or desktop computer, chances are that you&#8217;re in a very controlled environment; lighting is good, you sit a comfortable distance from the monitor, and using a mouse or trackpad to control a screen cursor is a simple task. In contrast, mobile devices may be used in unpredictable situations; outdoors in very bright light, in the course of another activity (like driving), or while in constant motion&#8212which makes coordinated movements difficult to perform. By making the clickable area of an action large, many of these issues are resolved. When highlighted by a contrasting background color, important actions are more easily seen and targeted even when overall screen contrast is poor. Most important of all, a large click area requires less precision and effort to activate; an excellent manifestation of <a href="http://en.wikipedia.org/wiki/Fitts_law">Fitts&#8217;s law</a>.</p>
<h3 id="context-of-the-medium">Context of the medium</h3>
<p>Interfaces designed for a desktop internet browser experience are usually not optimized for a mobile internet browser. Aside from the issues arising out of the context of use, the mobile device itself may present you with challenges and opportunities not present in the desktop realm:</p>
<ul>
<li>Dealing with phone numbers and other mobile friendly data</li>
<li>Displaying information on a smaller screen</li>
<li>Not using a cursor</li>
<li>Device speed and network latency</li>
</ul>
<h4 id="phone-numbers-and-other-data">Dealing with phone numbers and other mobile-friendly data</h4>
<p>If your mobile web application displays phone numbers, making it easy for a user to dial that phone number should be a top priority. By using the tel: URI scheme and linking a phone number, many mobile internet browsers will dial the linked phone number.</p>
<p>Some mobile devices may redirect certain URLs to native applications. This is the case with the iPhone redirecting YouTube and Google Maps URLs to the onboard application, but can also be observed with phones that automatically open the built-in calendar when an iCal file is downloaded, or open the built-in address book when a vCard file is downloaded. To design an experience that can gracefully coexist with others tools, one needs to understand what kind of media can be processed by specific mobile internet browsers, and when onboard applications are launched.</p>
<h4 id="displaying-info-on-a-smaller-screen">Displaying information on a smaller screen</h4>
<p>While most desktop web applications are designed for 800&#215;600 or 1024&#215;768 resolutions, mobile devices employ significantly smaller displays. Some mobile browsers scale graphics to fit their screen width and some mobile browsers allow the user to scale and magnify a portion of the interface. Using traditional web development techniques of creating fluid designs that scale horizontally is the fastest way to deploy a single design to many different mobile devices.</p>
<p>Older mobile devices may have a horizontal resolution of as few as 96 pixels while newer models have horizontal resolutions of 240 or 320 pixels. If you are bothered by the wide range of horizontal resolutions and feel that your design options are discretely different for different resolutions, think about creating resolution-specific CSS files. Common horizontal resolutions are 96, 128, 176, 240, and 320 pixels.</p>
<p>If you have the luxury of targeting specific devices, don&#8217;t overlook the option of serving device-specific CSS files. Doing this allows you to fine-tune object dimensions for a specific device as well as customizing your application&#8217;s skin to provide an onboard application feel, if so desired.</p>
<h4 id="not-using-a-cursor">Not using a cursor</h4>
<p>Mice, joysticks, scroll-wheels, keypads, fingers, and styli&#8212;oh my! Different mobile devices require different tools to interact with their interfaces. While each of these input tools accomplishes the essential task of selecting an object, each also presents us with limitations.</p>
<p>Joysticks, scroll-wheels, and keypads typically use up/down commands to scroll content and automatically focus on fields, links, and buttons. In essence, this limits a designer and developer to listening for focus, blur, and click events. Advanced devices that use fingers and/or styli as the input tool may provide access to more events, but here too a wide range of device specific behavior may restrict event listening to a small set. Blazer and PocketIE browsers, depending on device configurations, may allow a user to scroll a page by using a stylus to interact with scroll bars; the same browser on a different device may be limited to a joystick input tool. The Safari browser on the iPhone offers page scrolling by allowing the user to push the page in the direction of the scroll. Whereas Blazer and PocketIE browsers could allow for the opportunity for direct object manipulation (like drag and drop), such an action is not natively available on the iPhone because the act of dragging is reserved for a system-level interactions.</p>
<p>All is not lost, however. Just because a device does not support dragging or double clicking does not mean it has a poor event model. The act of dragging an object to a drop area may seem trivial&#8212;but when this action needs to be performed in a moving subway while clinching a hand strap, the mechanics involved can range from being frustrating (using one&#8217;s thumb to drag and other fingers to hold device) to outright masochistic (trying to control a stylus from moving around a slippery surface).</p>
<h4 id="device-speed-and-network-latency">Device speed and network latency</h4>
<p>Until the day that WiFi and WiMAX technologies are built into every mobile device, planning on data transfers via GPRS and EDGE networks is a reality&#8212;which means data is transfered as slow as 60 kbits/sec. Even if one is able to overcome the speed and latency of a slow data network, there&#8217;s still the mobile device&#8217;s processor and RAM to contend with. As expected, a desktop or laptop computer is several times more powerful than a typical mobile device. Complex code execution on a mobile device may therefore be several times slower than the same code run on a desktop computer. More importantly, mobile devices are all about the consumption of information; lightweight interfaces (both in terms of features and bytes) deliver information faster.</p>
<h3 id="what-it-boils-down-to">What it boils down to</h3>
<p>Simplifying interactions and streamlining access to information may not be as cool as crafting richer interactions, but they are the most effective techniques available at producing a design that is easy to use on a mobile platform. Simplified interfaces can also lead to leaner code, which means less data is transfered over slow connections.</p>
<p>Designing with awareness to context will yield a more atomic design that instead of introducing users to a proverbial blank canvas, will guide them toward accomplishing important tasks. Having to deal with slow data speeds, high network latency, smaller screens, and an unpredictable mode of use only reinforce the need to isolate an application&#8217;s essential features and offer access to them when contextually appropriate.</p>
<p>Next time you design an interface for a mobile device, remember to consider context of use and context of the medium as part of your design strategy.</p>
<h3 id="more-mobile-resources-online">Online Resources</h3>
<p>The links below provide more in-depth information about several popular mobile platforms:</p>
<h4>ACCESS / Palm OS</h4>
<ul>
<li><a href="http://www.access-company.com/developers/documents/docs/ui/UI_Design.html">ACCESS | Palm OS Application Design</a></li>
<li><a href="http://www.access-company.com/developers/documents/docs/zenofpalm.pdf">Zen of Palm (PDF)</a></li>
</ul>
<h4>Apple iPhone</h4>
<ul>
<li><a href="http://developer.apple.com/documentation/iPhone/Conceptual/iPhoneHIG/">Apple iPhone Human Interface Guidelines</a></li>
</ul>
<h4>BlackBerry</h4>
<ul>
<li><a href="http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/7979/1181821/832210/Optimizing_Content_for_the_BlackBerry_Browser.pdf?nodeid=1206500&#038;vernum=0">Optimizing Content for the BlackBerry Browser (PDF)</a></li>
</ul>
<h4>Nokia</h4>
<ul>
<li><a href="http://www.forum.nokia.com/main/resources/technologies/browsing/articles/introduction_to_the_nokia_web_browser.html">Nokia Web Browser Design Guide</a></li>
</ul>
<h4>Microsoft Mobile Internet Explorer</h4>
<ul>
<li><a href="http://msdn2.microsoft.com/en-us/library/aa286514.aspx">Microsoft | Mobile Web Development</a></li>
</ul>
<h4>Motorola</h4>
<ul>
<li><a href="http://developer.motorola.com/docstools/developerguides/">Motorola Developer Guides</a></li>
</ul>
<p><ins datetime="2007-10-03T17:46Z">Update: fixed broken <a href="http://en.wikipedia.org/wiki/Fitts_law">Fitts&#8217;s Law</a> link.</ins></p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=Fd2yBFJa"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=Fd2yBFJa" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=RDGfBRvQ"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=RDGfBRvQ" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=qokD5QnJ"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=qokD5QnJ" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=4iosnWk0"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=4iosnWk0" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2007/10/02/challenges-of-interface-design-for-mobile-devices/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New pattern (Vote to Promote), new navigation</title>
		<link>http://yuiblog.com/blog/2007/09/05/pattern-vote-to-promote/</link>
		<comments>http://yuiblog.com/blog/2007/09/05/pattern-vote-to-promote/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 23:51:35 +0000</pubDate>
		<dc:creator>Christian Crumlish</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2007/09/05/pattern-vote-to-promote/</guid>
		<description><![CDATA[Things have been quiet recently in Yahoo&#8217;s open pattern library, but behind the scenes we&#8217;ve been working on some cool stuff. First of all, we&#8217;ve reorganized the navigation for Yahoo!&#8217;s internal library and have now updated the navigation of the public library to match. 
We&#8217;ve done away with the first-order distinction of &#8220;User needs to&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://developer.yahoo.com/ypatterns/pattern.php?pattern=votetopromote'><img style='margin: 0 1em 1em 0;' src='http://www.yuiblog.com/blog/wp-content/uploads/2007/09/pattern_vote2promote_sub.gif' alt='thumbnail of a Digg page, the canonical example of the Vote to Promote pattern' title='thumbnail of a Digg page, the canonical example of the Vote to Promote pattern'/ align='left' ></a>Things have been quiet recently in Yahoo&#8217;s open pattern library, but behind the scenes we&#8217;ve been working on some cool stuff. First of all, we&#8217;ve reorganized the navigation for Yahoo!&#8217;s internal library and have now updated the navigation of the public library to match. </p>
<p>We&#8217;ve done away with the first-order distinction of &#8220;User needs to&#8221; and &#8220;Application needs to.&#8221; In the interests of fostering a user-centered (or, if you prefer, customer-centric) design perspective, we have reclassified all of the patterns in terms of a set of high-level user needs, because we feel that even things the application (or designer) &#8220;needs&#8221; to do must be driven ultimately by satisfying the need of an end-user.</p>
<p>Currently, the top-level categories in the new organizational scheme include Search, Navigate, Read, Select, Interact, Give Feedback, and Customize. A few more will probably appear as we roll out additional patterns.</p>
<p>Speaking of which, we are publishing a new pattern today, <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=votetopromote">Vote to Promote</a>, which is our interpretation of the best way to incorporate a scheme to allow your users to vote up content, whether content native to your application or identified elsewhere (as with <a href="http://digg.com/">Digg</a> and <a href="http://reddit.com/">Reddit</a>).</p>
<p>Vote to Promote was written by <a href="http://soldierant.net">Bryce Glass</a>, a senior interaction designer on our community platform team. It&#8217;s the first in a series of &#8220;social media&#8221; patterns we&#8217;ve been working on now for much of this year, and you can expect a bunch more to appear over the next few months. </p>
<p>Vote to Promote is also the first pattern to include a &#8220;pattern gallery.&#8221; One bit of feedback we hear a lot - from you and from designers inside Yahoo! - is that more illustrations are better. This may sometimes show up in the form of diagrams, schematics, and templates. But each new pattern we release from now on will also feature a set of example images captured from across the Internet and displayed via Flickr. Check out <a href="http://www.flickr.com/photos/xian/sets/72157600669632171/detail/">the Vote to Promote pattern gallery</a> and feel free to suggest additional examples.</p>
<p>Let us know what you think of the new navigation scheme and the latest addition to the library. Thanks!</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=kuIABfWG"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=kuIABfWG" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=YgQY5eH3"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=YgQY5eH3" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=J6uQiwrI"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=J6uQiwrI" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=QE2yvsWE"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=QE2yvsWE" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2007/09/05/pattern-vote-to-promote/feed/</wfw:commentRss>
		</item>
		<item>
		<title>YUI Theater — Karo Caran and Victor Tsaran: “Introduction to Screen Magnifiers”</title>
		<link>http://yuiblog.com/blog/2007/06/12/video-intro-to-screen-magnifiers/</link>
		<comments>http://yuiblog.com/blog/2007/06/12/video-intro-to-screen-magnifiers/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 02:40:51 +0000</pubDate>
		<dc:creator>Nate Koechley</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Development]]></category>

		<category><![CDATA[YUI Theater]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2007/06/12/video-intro-to-screen-magnifiers/</guid>
		<description><![CDATA[
With the goal of better understanding how people interact with the Web via various types of Assistive Technology (AT) &#8212; and what that might mean for developers and designers &#8212; Karo Caran takes us on a 16 minute overview of screen magnification software (in this case ZoomText) and how it is used by partially-sighted users [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://video.yahoo.com/video/play?vid=633844"><img src="http://yuiblog.com/assets/intro-to-screen-magnifiers.jpg" width="476" height="355" alt="Picture of Karo Caran and Victor Tsaran from the video's opening. Click here to watch the video on Yahoo! Video."></a></p>
<p>With the goal of better understanding how people interact with the Web via various types of Assistive Technology (AT) &#8212; and what that might mean for developers and designers &#8212; Karo Caran takes us on a 16 minute overview of screen magnification software (in this case <a href="http://www.synapseadaptive.com/aisquared/zoomtext_9/zoomtext_9_magnifier_reader.htm">ZoomText</a>) and how it is used by partially-sighted users to interact with the Web. Karo shows you the basic toolkit and then applies those tools to some typical web sites to give you some perspective on how she uses magnification software while she browses the web.</p>
<p>Though screen <em>readers</em> get most of the press, it&#8217;s good to remember that it&#8217;s not the only AT game in town.</p>
<div><embed src='http://us.i1.yimg.com/cosmos.bcst.yahoo.com/player/media/swf/FLVVideoSolo.swf' flashvars='id=2985804&#038;emailUrl=http%3A%2F%2Fvideo.yahoo.com%2Futil%2Fmail%3Fei%3DUTF-8%26vid%3D633844&#038;imUrl=http%253A%252F%252Fvideo.yahoo.com%252Fvideo%252Fplay%253Fei%253DUTF-8%2526vid%253D633844&#038;imTitle=An%2BIntroduction%2Bto%2BScreen%2BMagnification%2BSoftware&#038;searchUrl=http://video.yahoo.com/video/search?p=&#038;profileUrl=http://video.yahoo.com/video/profile?yid=&#038;creatorValue=ZXJpY21pcmFnbGlh&#038;vid=633844' type='application/x-shockwave-flash' width='425' height='350'></embed></div>
<h3>Related URLs</h3>
<ul>
<li><a href="http://yuiblog.com/blog/2007/05/14/video-intro-to-screenreaders/">YUI Theater — Victor Tsaran: &#8220;Introduction to Screen Readers&#8221;</a></li>
<li><a href="http://yuiblog.com/blog/2007/03/28/video-geoffray/">YUI Theater — Doug Geoffray: &#8220;From the Mouth of a Screenreader&#8221;</a></li>
</ul>
<h3>Technical Notes</h3>
<p>A <a href="http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/caran-screenmag.m4v">downloadable and iPod-compatible MPEG version</a> of this video is available for download. The .m4v file format we&#8217;ve used for this video (and many others in the <a href="http://developer.yahoo.com/yui/theater/">YUI Theater</a>) signifies that it is an MPEG-4 file with video; if you&#8217;re not downloading to view on an iPod, and/or are using a system that doesn&#8217;t recognize the .m4v extension, try renaming the file to .mp4.</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=GprzLTM4"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=GprzLTM4" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=t7WznqJs"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=t7WznqJs" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=AycQVWnV"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=AycQVWnV" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=Cm1nNUsD"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=Cm1nNUsD" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2007/06/12/video-intro-to-screen-magnifiers/feed/</wfw:commentRss>
<enclosure url="http://us.dl1.yimg.com/download.yahoo.com/dl/ydn/yui/theater/caran-screenmag.m4v" length="59692947" type="video/x-m4v" />
		</item>
		<item>
		<title>Happy Birthday to the Pattern Library, Too!</title>
		<link>http://yuiblog.com/blog/2007/03/05/pattern-library-anniversary/</link>
		<comments>http://yuiblog.com/blog/2007/03/05/pattern-library-anniversary/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 19:10:21 +0000</pubDate>
		<dc:creator>Christian Crumlish</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2007/03/05/pattern-library-anniversary/</guid>
		<description><![CDATA[We recently celebrated the one-year anniversary of the open-source release of the YUI Library. It is also the one-year anniversary of the public release of the Yahoo! Design Pattern Library. Not wanting to miss out on the fun, we published two new patterns: Calendar Picker and Alphanumeric Filter Links.
This is also a good opportunity to [...]]]></description>
			<content:encoded><![CDATA[<p>We recently celebrated the one-year anniversary of the open-source release of the <a href="http://developer.yahoo.com/yui/">YUI Library</a>. It is also the one-year anniversary of the public release of the <a href="http://developer.yahoo.com/ypatterns/">Yahoo! Design Pattern Library</a>. Not wanting to miss out on the fun, we published two new patterns: <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=calendar">Calendar Picker</a> and <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=alphafilterlinks">Alphanumeric Filter Links</a>.</p>
<p>This is also a good opportunity to introduce myself. My name is Christian Crumlish. I am an information architect, interaction designer, writer, and the new curator of the Pattern Library. I think of myself as a pattern <em>detective</em> because a big part of my job is to uncover successful patterns on the Yahoo! network and &#8220;in the wild&#8221; and capture and document them for eventual publication in the Pattern Library.</p>
<p>I&#8217;ve got some big shoes to fill. Matt Leacock was our first pattern librarian, launched our internal pattern library, developed many of the earliest patterns, and established a structure and process for the library. Bill Scott oversaw the public release of the pattern library as you you probably remember from his posts on this blog and the slew of fantastic Ajax patterns (among others) that he shepherded into the library. Fortunately they&#8217;re both still nearby for me to hassle when I&#8217;m not sure what to do, as is Erin Malone whose leadership has driven the development and release of the library all along.</p>
<h3 id="newest-patterns">The two newest patterns</h3>
<p>The <a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=calendar">Calendar Picker</a> comes in handy when users need to select dates or date ranges. Probably the canonical scenario is travel planning. Airline reservation systems all use some variation on the calendar picker pattern and the best ones do a good job of anticipating the date vicinity, especially for the return portion of a round trip. The YUI Library has a <a href="http://developer.yahoo.com/yui/calendar/">Calendar</a> control which this pattern complements.</p>
<p><a href="http://developer.yahoo.com/ypatterns/pattern.php?pattern=alphafilterlinks">Alphanumeric Filter Links</a> sound deceptively simple: a common segmentation of large information repositories for easier navigation. (Of course this only works in alphabetic languages!) However, our internal review process uncovered a number of gotchas related to alphabetization and found a number of variations of this pattern to address distinct scenarios. Basic list filtering driven by text-links is so &#8220;Web 1.0&#8243; so we&#8217;ll be sure to relate this context to Auto Complete and other dynamic ways of sorting and filtering long lists of data. As we build up the Pattern Library we&#8217;ll group them together under an umbrella parent pattern.</p>
<p>As always, we welcome discussion, feedback, and suggestions about these patterns on the <a href="http://tech.groups.yahoo.com/group/ydn-patterns/">ydn-patterns</a> list. I&#8217;ll be announcing new pattern releases here on the YUI Blog, and will continue the series of exploratory posts and essays Bill Scott started. Together I expect we will contribute to the public discussion of design pattern, interaction design, information architecture, and user experience in general.</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=U3tuhjt4"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=U3tuhjt4" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=wfmMRDki"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=wfmMRDki" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=O0fn2kTs"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=O0fn2kTs" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=ngOAPmfO"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=ngOAPmfO" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2007/03/05/pattern-library-anniversary/feed/</wfw:commentRss>
		</item>
		<item>
		<title>You’re Invited: YUI’s First Year Party!</title>
		<link>http://yuiblog.com/blog/2007/02/05/first-year-party/</link>
		<comments>http://yuiblog.com/blog/2007/02/05/first-year-party/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 08:33:22 +0000</pubDate>
		<dc:creator>Nate Koechley</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2007/02/05/first-year-party/</guid>
		<description><![CDATA[This month the YUI Library turns one year old. When we started last year I wrote that I was &#8220;thrilled to have you with us.&#8221; That&#8217;s never been truer than it is today. We owe an outstanding first year to you. Libraries aren&#8217;t achievements themselves &#8212; it&#8217;s what people do with them that&#8217;s exceptional. We [...]]]></description>
			<content:encoded><![CDATA[<p>This month the <a href="http://developer.yahoo.com/yui">YUI Library</a> turns one year old. When we started last year <a href="http://yuiblog.com/blog/2006/02/13/welcome-to-the-yahoo-user-interface-blog/">I wrote</a> that I was &#8220;thrilled to have you with us.&#8221; That&#8217;s never been truer than it is today. We owe an outstanding first year to you. Libraries aren&#8217;t achievements themselves &#8212; it&#8217;s what people do with them that&#8217;s exceptional. We love everything you&#8217;re doing, so we&#8217;re throwing a party to thank you, our amazing community.</p>
<p>Join us Thursday, February 22nd, from 5:30 to 8:30 PM, at <a href="http://maps.yahoo.com/index.php#mvt=h&#038;gid1=21328305&#038;q1=701+First+Avenue%2C+Sunnyvale%2C+CA%2C+94089-0703&#038;trf=0&#038;lon=-122.02491&#038;lat=37.416391&#038;mag=3">Yahoo! HQ</a> in Sunnyvale, California. <a href="http://upcoming.org/event/148641">Visit Upcoming.org for details and to RSVP</a>. 300 people max, so RSVP early!</p>
<p>Beer. Food. Music. Guitar Hero on the projectors. Some other goodies and a few announcements we think you&#8217;ll like. (No, not Beck.)</p>
<p>At 6:30 there will be a brief presentation by the YUI team. After that we&#8217;ll have &#8220;built-with-YUI mini-demos&#8221;, where some of you can take the stage for 5 minutes to show off how you&#8217;ve been using the YUI Library. There&#8217;s only time for a handful of these quick talks before resuming the music and party around 7:15, so leave a note in the comments or send me an email directly (natek at yahoo-inc dot com) to get your proposal in.</p>
<p>That&#8217;s it: <a href="http://upcoming.org/event/148641">RSVP on Upcoming.org</a>, send in demo proposals, and get ready to party with us on Thursday, Feb 22nd, from 5:30pm.</p>
<p>Thanks,<br />
Nate</p>
<p>Update: The tag for this event is yuiparty07</p>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=uAj0shsL"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=uAj0shsL" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=AZ57Z9wb"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=AZ57Z9wb" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=CF9JuXXZ"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=CF9JuXXZ" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=8FjcVsi8"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=8FjcVsi8" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2007/02/05/first-year-party/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Design Pattern Conversation: What’s the Best Way to Communicate Patterns? Part Five.</title>
		<link>http://yuiblog.com/blog/2006/10/23/communicating_patterns_part_five/</link>
		<comments>http://yuiblog.com/blog/2006/10/23/communicating_patterns_part_five/#comments</comments>
		<pubDate>Mon, 23 Oct 2006 14:44:10 +0000</pubDate>
		<dc:creator>Bill Scott</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://yuiblog.com/blog/2006/10/23/communicating_patterns_part_five/</guid>
		<description><![CDATA[

This is the final article of a five-part series on communicating design patterns. When James Reffell wrote this piece, he was the pattern curator for the eBay pattern engine. For more background on design patterns, you can read an earlier five-part conversation answering the question What are Design Patterns?

Q: What&#8217;s the best way to communicate [...]]]></description>
			<content:encoded><![CDATA[<div class="interview">
<div class="intro">
<p>This is the final article of a five-part series on communicating design patterns. When James Reffell wrote this piece, he was the pattern curator for the eBay pattern engine. For more background on design patterns, you can read an earlier five-part conversation answering the question <a href="http://www.lukew.com/ff/entry.asp?347">What are Design Patterns?</a></p>
</div>
<p class="q">Q: What&#8217;s the best way to communicate a pattern?</p>
<div class="bio">
<img src="http://yuiblog.com/assets/design/dp_james.jpg" alt="James Reffell"></p>
<p class="sig"><a href="http://designcult.typepad.com/">James Reffell</a><br />
UI Design Manager, eBay Inc.<br />
Curator,  <a href="http://www.lukew.com/ff/entry.asp?318">eBay Pattern Engine</a>
</p>
</div>
<p>I&#8217;m constantly amazed at the power of design patterns to communicate. I&#8217;ve found that a well-described pattern can both convey both a specific solution (which can help me solve a difficult design problem) and the core interaction principles that underly all good patterns (which can help make me a better designer).</p>
<p>While designers will probably always be the primary authors of and audience for design patterns, I&#8217;m finding more and more that they&#8217;re useful in communicating with all sorts of folks. These include not only the developers who are responsible for building our designs but also the business folks, product managers, and other non-designers. There&#8217;s also a big difference between talking to other designers inside an organization (as with eBay or Yahoo&#8217;s internal pattern libraries) and talking to a more general design audience (as with books or the public libraries).</p>
<p>The core pieces of information – What, Use When, Why, How, and Examples – are necessary to tell the story of each pattern for all audiences, and Who becomes a big deal in an internal library. Users of an internal library might also find links to internal design standards and specifications useful, as well as a list of places where the pattern appears. Additionally, as Bill points out, if the pattern will be used by a specific developer audience, the How and Examples might add sample code and implementation details. Since patterns aren&#8217;t exactly built in stone, it&#8217;s also helpful to add things like ratings, discussions, links to similar patterns, and the like.</p>
<p>Once you&#8217;ve added all these additional pieces of information you have something that&#8217;s grown well beyond just a design library – and that&#8217;s OK as long as it works for the intended audience, and as long as those first core pieces are in place!</p>
<p>So much for the parts of the whole. I think it&#8217;s also important to look at the pattern description as a whole and coherent story, however. Narrative is an important tool for communication, and I think we might not take advantage of it enough – some pattern descriptions can get a little clinical. I prefer to see the examples rounded out with some history—and maye some drama and a few laughs! There&#8217;s no harm in telling how we came to realize a given pattern was a good solve, the bumps along the road, the other things that we&#8217;ve tried and have failed entertainingly. Why can&#8217;t a design pattern also be a ripping good yarn?</p>
<p>Finally, the designer in me thinks we should maybe take a little of our own medicine here. Design patterns are primarily tools for designers, and we should design them accordingly. One of the things that impressed me with the Yahoo pattern group&#8217;s work is that they worked in some good design methodlogies when building the library—I&#8217;d love to see more work along those lines. Does anyone know of other examples of user testing for our pattern libraries?</p>
<p>- James</p>
</div>
<div class="feedflare">
<a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=UbToOSRw"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=UbToOSRw" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=CPYBmn37"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=CPYBmn37" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=8GDH500u"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=8GDH500u" border="0"></img></a> <a href="http://feeds.yuiblog.com/~f/yuiblog/design?a=e4sok2j4"><img src="http://feeds.yuiblog.com/~f/yuiblog/design?i=e4sok2j4" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://yuiblog.com/blog/2006/10/23/communicating_patterns_part_five/feed/</wfw:commentRss>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 2.662 seconds -->
