<?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>Global Nerdy &#187; user interface</title>
	<atom:link href="http://www.globalnerdy.com/tag/user-interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.globalnerdy.com</link>
	<description>Tech Evangelist Joey deVilla on software development, tech news and other nerdy stuff</description>
	<lastBuildDate>Fri, 19 Mar 2010 00:24:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows Phone 7 Series: Now That&#8217;s More Like It!</title>
		<link>http://www.globalnerdy.com/2010/02/15/windows-phone-7-series-now-thats-more-like-it/</link>
		<comments>http://www.globalnerdy.com/2010/02/15/windows-phone-7-series-now-thats-more-like-it/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 17:21:07 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Play]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Counting Down to Seven]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[touch]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=5468</guid>
		<description><![CDATA[
A New Windows for the Phone
Ever since joining The Empire, I’ve been saying that Windows Mobile needs to go back to the drawing board. While there was good technology lying in its innards – mobile versions of the .NET framework, SQL Server and Office – treating the mobile form factor as “the desktop, but much, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Windows Phone 7 Series generic phone" border="0" alt="Windows Phone 7 Series generic phone" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/02/windowsphone7.jpg" width="200" height="391" /></p>
<h3>A New Windows for the Phone</h3>
<p><strong>Ever since joining The Empire, <a href="http://www.globalnerdy.com/2009/02/11/this-is-how-the-current-state-of-windows-mobile-makes-me-feel/">I’ve been saying that Windows Mobile needs to go back to the drawing board</a>.</strong> While there was good technology lying in its innards – mobile versions of the .NET framework, SQL Server and Office – treating the mobile form factor as “the desktop, but much, much smaller”, was the wrong approach. In the meantime, the Esteemed Competition were doing the right thing: designing their phones’ OS features and interface from the ground up rather than attempting to force-fit the desktop UI into a pocket UI.</p>
<p><strong><a href="http://www.microsoft.com/presspass/press/2010/feb10/02-15MWC10PR.mspx">Today at Mobile World Congress in Barcelona, Microsoft previewed the latest in a series of steps forward</a></strong> – consider Xbox to <a href="http://www.microsoft.com/xbox/">Xbox 360</a>, Windows Vista to <a href="http://www.microsoft.com/windows/windows-7/what-is-windows-7.aspx">Windows 7</a>, Live Search to <a href="http://bing.ca">Bing</a> – there’s now <strong><a href="http://www.windowsphone7series.com/">Windows Phone 7 Series</a></strong>.</p>
<p>(The name’s a bit long. Whoever does the naming at Microsoft corporate HQ must get paid by the syllable.)</p>
<h3>A Quick Look at Windows Phone’s Experience</h3>
<p>A good starting point is this video, which covers Windows Phone’s features in three minutes, thirty seconds:</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/7IOTrqlz4jo&amp;hl=en_US&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7IOTrqlz4jo&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>You can take an interactive tour of the UI at the <strong><a href="http://www.windowsphone7series.com/">Windows Phone 7 Series site</a></strong>:</p>
<p><a href="http://www.windowsphone7series.com/"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Screenshot of the Windows Phone 7 Series site&#39;s home page" border="0" alt="Screenshot of the Windows Phone 7 Series site&#39;s home page" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/02/image21.png" width="600" height="436" /></a> </p>
<h3>A Closer Look at the Windows Phone Experience</h3>
<p align="left">Over at Channel 9, Laura Foy has posted her interview with <strong>Joe Belfiore</strong>, VP Windows Phone 7 Program Management, who gave her <strong><a href="http://channel9.msdn.com/posts/LauraFoy/First-Look-Windows-Phone-7-Series-Hands-on-Demo/">a walkthrough of the goodies in Windows Phone</a></strong> (the video is 22 minutes, 18 seconds):</p>
<p align="center"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="512" height="384"><param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer10_01_18.xap" /><param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/wp7.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/wp7_512_thumb.png, postid=526720" /><param name="background" value="#00FFFFFF" /><a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /> </a> </object></p>
<p><strong>Some quick notes from the video:</strong></p>
<ul>
<li>There are three mandatory hardware buttons, which are context-sensitive:
<ul>
<li>Back </li>
<li>Windows (the “Start” button) </li>
<li>Search </li>
</ul>
</li>
<li>The screen is a capacitive touch-screen, capable of supporting multi-touch </li>
<li>The Start menu is built up of tiles: little block representing the information and features that you care most about
<ul>
<li>You can add your own custom tiles; Joe shows a “me” tile linked to his Facebook profile </li>
</ul>
</li>
<li>A browser with:
<ul>
<li>Snappy performance </li>
<li>Support for multitouch actions such as pinch zoom, double-tap to zoom and finger drag </li>
<li>Very readable text, that to sub-pixel positioning in HTML </li>
<li>Phone number recognition in HTML documents; touch them to dial them </li>
<li>Street address recognition in HTML documents; touch them to get a map </li>
<li>Multiple tabs </li>
</ul>
</li>
<li>The “People Hub”
<ul>
<li>Aggregates Exchange, Hotmail, Gmail, Yahoo! Mail and other mail contacts </li>
<li>Provides a live feed of your contacts </li>
</ul>
</li>
<li>Context-sensitive search:
<ul>
<li>Press the “Search” button while in the People Hub, and you search your people list </li>
<li>Press the “Search” button while in the Start menu, and it runs a web search
<ul>
<li>Based on your query, it knows whether to give you a web search result or a local search result </li>
<li>In the demo, Joe does a search for pizza and gets a map and results for pizzerias near him, and a quick pan over to adjacent pages yield directions and reviews </li>
<li>A tap on “nearby” yield the locations of useful things like parking, ATMs and so on near the selected pizzeria </li>
<li>In another demo search, Joe does a search for “Avatar” and it returns a list of nearby theatres and times for the movie <em>Avatar</em>; a quick pan to an adjacent page yields the results for local business and places with “Avatar” in the name </li>
</ul>
</li>
</ul>
</li>
<li>Email:
<ul>
<li>Easy pivoting between unread, flagged and urgent emails </li>
<li>A caching system prevents you from seeing the dreaded “loading” screen </li>
<li>Press “Search” within email and you perform a search of your email messages, by subject, text and so on </li>
</ul>
</li>
<li>Rotation: you can operate the phone in “portrait” or “landscape” mode </li>
<li>Calendar:
<ul>
<li>Support for both work and personal calendars </li>
</ul>
</li>
<li>ActiveSync works in the background and keeps the phone synced with email, contacts and calendar </li>
<li>User-customizable UI colour schemes </li>
<li>The “Pictures Hub”
<ul>
<li>Gallery: Lets you browse all the pictures on your phone </li>
<li>Mosaic: Recent and favourite pictures </li>
<li>What’s New: New photos from your social networks </li>
<li>Camera roll: A folder for photos taken with your phone </li>
<li>Support for photo albums from Facebook and Windows Live, which you browse as if they lived right on your phone </li>
</ul>
</li>
<li>Music and Video
<ul>
<li>History: Most recently played music and videos </li>
<li>New: New music and videos added since the last sync </li>
<li>Zune HD-style marketplace searching and support for Zune subscriptions with unlimited music plays </li>
</ul>
</li>
<li>The “Me” tile
<ul>
<li>Lets you update your status on places like Facebook </li>
<li>Nice little typing features like auto-spelling-correction and a special soft keyboard for emoticons </li>
</ul>
</li>
<li>The UI concept: Windows Phone is task-centric, not app-centric, with a hub associated with each: people, photos, media </li>
<li>There&#8217;s also a games hub, which ties into Xbox Live </li>
<li>Third-party applications and games? Wait… </li>
</ul>
<h3>Wait a Minute…What About Third-Party Apps and Games?</h3>
<p><a href="http://live.visitmix.com/"><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="&quot;MIX10: The Next Web Now&quot; logo button" border="0" alt="&quot;MIX10: The Next Web Now&quot; logo button" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/01/mix10logo.jpg" /></a>Can you wait a month?</p>
<p>Here’s the deal: the announcement at Mobile World Congress was about showing what Windows Phone can do. <strong>As for what’s possible on the developer front, it’ll all be announced at the <a href="http://live.visitmix.com/">MIX10 Conference</a>, which takes place from March 15th through 17th in Las Vegas.</strong></p>
<p><a href="http://live.visitmix.com/Sessions#/tags/WindowsPhone"><strong>There will be a dozen sessions at MIX10 for Windows Phone</strong></a>, and they promise to be quite interesting. I’ll be at MIX10, and will blog what I learn from these sessions when they take place.</p>
<p><strong>You can save $200 off the price of MIX10 registration if you register before February 21st,</strong> so if you want to get in on the ground floor with Windows Phone and save some money, <a href="http://live.visitmix.com/Registration">register now</a>!</p>
<h3>What the Tech Press is Saying</h3>
<p><strong>Pretty good stuff, actually.</strong> Rather than bury you with links to a zillion blog entries filed from Mobile World Congress, I thought I’d pick two of the big tech blogs, <em>Gizmodo</em> and <em>Engadget</em>:</p>
<p><a href="http://gizmodo.com/5471805/windows-phone-7-series-everything-is-different-now"><strong>Here’s what <em>Gizmodo</em> has to say about the new Windows Phone:</strong></a></p>
<blockquote><p>It&#8217;s <em>different</em>. The face of Windows Phone 7 is not a rectangular grid of thumbnail-sized glossy-looking icons, arranged in a pattern of 4&#215;4 or so, like basically every other phone. No, instead, an oversized set of bright, superflat squares fill the screen. The pop of the primary colors and exaggerated flatness produces a kind of cutting-edge crispness that feels both incredibly modern and playful. Text is big, and beautiful. The result is a feat no phone has performed before: Making the iPhone&#8217;s interface feel staid.</p>
<p>If you want to know what it <em>feels</em> like, the Zune HD provides a taste: Interface elements that run off the screen; beautiful, oversized text and graphics; flipping, panning, scrolling, zooming from screen to screen; broken hearts. Some people might think it&#8217;s gratuitous, but I think it feels natural and just…fun. There&#8217;s an incredible sense of <em>joie de vivre</em> that&#8217;s just not in any other phone. It makes you wish that this was aesthetic direction all of Microsoft was going in.</p>
</blockquote>
<p><strong><a href="http://www.engadget.com/2010/02/15/windows-phone-7-series-hands-on-and-impressions/">Here are <em>Engadget’s</em> impressions, after having some hands-on time with Windows Phone:</a></strong></p>
<blockquote><p>The design and layout of 7 Series&#8217; UI (internally called Metro) is really quite original, utilizing what one of the designers (Albert Shum, formerly of Nike) calls an &quot;authentically digital&quot; and &quot;chromeless&quot; experience. What does that mean? Well we can tell you what it doesn&#8217;t mean &#8212; no shaded icons, no faux 3D or drop shadows, no busy backgrounds (no backgrounds at all), and very little visual flair besides clean typography and transition animations. The whole look is strangely reminiscent of a terminal display (maybe Microsoft is recalling its DOS roots here) &#8212; almost Tron-like in its primary color simplicity. To us, it&#8217;s rather exciting. This OS looks nothing like anything else on the market, and we think that&#8217;s to its advantage. Admittedly, we could stand for a little more information available within single views, and we have yet to see how the phone will handle things like notifications, but the design of the interface is definitely in a class of its own.</p>
</blockquote>
<p>(In another article, <em>Engadget</em> simply summed it up with <a href="http://www.engadget.com/2010/02/15/windows-phone-7-series-is-official-and-microsoft-is-playing-to/">“Microsoft is playing to win”</a>.)</p>
<h3>Watch this Space!</h3>
<p><a href="http://www.globalnerdy.com/tag/counting-down-to-seven/"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px 15px; display: inline; border-top: 0px; border-right: 0px" border="0" alt="&quot;Counting Down to Seven&quot; badge" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/02/countingdowntosevensmall1.jpg" /></a>We’ll have more announcements about Windows Phone over the next few weeks, so keep an eye on this blog!</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2010/02/15/windows-phone-7-series-now-that-s-more-like-it.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/02/15/windows-phone-7-series-now-thats-more-like-it/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://ecn.channel9.msdn.com/o9/ch9/wp7.wmv" length="294440319" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>Qixing&#8217;s Big Move</title>
		<link>http://www.globalnerdy.com/2010/01/04/qixings-big-move/</link>
		<comments>http://www.globalnerdy.com/2010/01/04/qixings-big-move/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 22:00:00 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[What Joey Did]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Evangelism]]></category>
		<category><![CDATA[Qixing Zheng]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=5160</guid>
		<description><![CDATA[Good Luck, Qixing!

We may be losing a User Experience Evangelist, but I think we’ll get a great Windows 8 in return. Qixing Zheng, who’s been with Microsoft Canada’s Developer and Platform Evangelism team for the past three years, is leaving to join the Windows UX Team as a Program Manager. While I saw firsthand that [...]]]></description>
			<content:encoded><![CDATA[<p></p><h3>Good Luck, Qixing!</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="QIxing Zheng in her TechDays 2009 orange speaker shirt" border="0" alt="QIxing Zheng in her TechDays 2009 orange speaker shirt" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/01/qixingzheng_thumb.jpg" width="600" height="400" /></p>
<p><strong>We may be losing a User Experience Evangelist, but I think we’ll get a great Windows 8 in return.</strong> <strong>Qixing Zheng,</strong> who’s been with Microsoft Canada’s Developer and Platform Evangelism team for the past three years, is leaving to join the Windows UX Team as a Program Manager. While I saw firsthand that she enjoyed her work as a UX Evangelist, talking to developers and designers about building usable, comprehensible and beautiful applications, joining the Windows UX Team is the opportunity of a lifetime. After all, how often are you given the chance to design something that will get used all the time by millions of people, all over the world, at work, play and in their day-to-day lives?</p>
<p>Qixing’s been the sole writer for the <em><a href="http://blogs.msdn.com/canux/"><strong>Canadian UX Connection</strong></a></em> blog during her tenure. She posted her farewell article, <em><a href="http://blogs.msdn.com/canux/archive/2010/01/01/a-new-year-and-a-new-beginning.aspx">A New Year and a New Beginning</a></em>, on January 1st, but don’t think that’s the last you’ve seen of her online. She promises that she’ll be blogging soon – she’ll let us know where, and I’ll let you know in turn. In the meantime, you can follow her on Twitter, where her handle is <a href="http://twitter.com/hundredflavour/"><strong>@hundredflavour</strong></a>.</p>
<h3>What About User Experience?</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Windows 3.1, as seen using the garish yellow and red &quot;Hot Dog Stand&quot; colour scheme" border="0" alt="Windows 3.1, as seen using the garish yellow and red &quot;Hot Dog Stand&quot; colour scheme" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/01/win3.1hotdogstandtheme_thumb.gif" width="600" height="451" /></p>
<p>While I’m glad that Qixing is going to be applying her skills and knowledge to Windows’ user interfaces, there remains the need for someone to help developers, designers and people who play both roles build useful, usable and beautiful interfaces, applications and experiences. This is becoming even more important as mainstream software development extends beyond the desktop OS to the web, mobile phones, tablets and even <a href="http://microsoft.com/surface/">big-ass tables</a>.</p>
<p>I’m planning to pick up some of the slack in the tech blogs where I write, <em><a href="http://blogs.msdn.com/cdndevs/">Canadian Developer Connection</a> </em>and <em><a href="http://globalnerdy.com/">Global Nerdy</a></em>. In addition to articles on programming, industry trends and reports from the field, I’ll also be posting articles about usability, user interface and user experience, as seen from the developer’s point of view. I’ve had <a href="http://datapanik.com/Samples.html">some experience</a> in this area, and where my skills and knowledge fall short, I can always call on my “friends in UI places” and bring their opinions and know-how to you.</p>
<p>Once again, congratulations Qixing, you’ve been a great teammate &#8212; and yes, we’ll keep evangelizing user experience!</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2010/01/04/qixing-s-big-move.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/01/04/qixings-big-move/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One-Handed Computing</title>
		<link>http://www.globalnerdy.com/2009/10/30/one-handed-computing/</link>
		<comments>http://www.globalnerdy.com/2009/10/30/one-handed-computing/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 22:03:15 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[one hand]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/10/30/one-handed-computing/</guid>
		<description><![CDATA[Yes, you probably went here as soon as you saw the phrase “One-Handed Computing”:
 
But in this case, I’m talking about what Jason Kottke is talking about &#8212; those times when you use mobile technology while your other hand isn’t free because you’re:

Eating 
Drinking 
Carrying or feeding a baby 
Walking the dog 
Carrying groceries 
“Straphanging” [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>Yes, you probably went here as soon as you saw the phrase “One-Handed Computing”:</strong></p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="&quot;Successories&quot; style poster featuring a woman gasping as a man shows her something on his computer: &quot;Your Porn Collection. Probably best kept to yourself.&quot;" border="0" alt="&quot;Successories&quot; style poster featuring a woman gasping as a man shows her something on his computer: &quot;Your Porn Collection. Probably best kept to yourself.&quot;" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/YourPornCollection.jpg" width="600" height="509" /> </p>
<p><strong><a href="http://kottke.org/09/10/one-handed-computing-with-the-iphone">But in this case, I’m talking about what Jason Kottke is talking about</a></strong> &#8212; those times when you use mobile technology while your other hand isn’t free because you’re:</p>
<ul>
<li>Eating </li>
<li>Drinking </li>
<li>Carrying or feeding a baby </li>
<li>Walking the dog </li>
<li>Carrying groceries </li>
<li>“Straphanging” on a train or bus </li>
<li>Getting by with a broken arm </li>
</ul>
<p>In the cases above – and I’m sure you can think of many more – you’re accessing computing resources in a very undesktop-like way: with only one hand, and even then, a limited portion of that hand since most of your fingers are busy holding that phone. <strong>You’re likely using only your thumb,</strong> as shown below:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="windows mobile 6.5 and thumb" border="0" alt="windows mobile 6.5 and thumb" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/windowsmobile6.5andthumb.jpg" width="450" height="600" /> </p>
<p>There are lots of times when users are stuck in “one-thumb mode”. If you’re building mobile applications, you should keep that in mind and make sure you design your user interfaces accordingly. You might need to consider things like:</p>
<ul>
<li>The size of touchscreen controls: make them too small and they’re not thumb-friendly. </li>
<li>The number of controls on the screen; the maximum number is dictated by their size. </li>
<li>Navigation in your app. Hierarchical arrangements make sense to developers, but lots of user experience people will tell you that ordinary people don’t get hierarchies. </li>
<li>Which functions will your users use most often? You should make those very easily accessible. Which functions will your users use less often? You might be able to put them on a secondary or tertiary screen. </li>
<li>Can you get information without making the user enter it? For example, can you infer information based on the user’s location, which you can grab from GPS instead of asking for him/her to enter it? Can your application remember your user’s most often-used data? </li>
<li>Can you get other kinds of one-handed input, such as from the camera, accelerometer, magnetometer or other sensors? </li>
</ul>
<p>That’s a fair bit to think about, and I might have to present some ideas at <a href="http://www.globalnerdy.com/2009/10/29/winmodevcamp-toronto-wednesday-november-11th-at-microsofts-mississauga-office/">the upcoming Toronto WinMoDevCamp</a> (and yes, I’ll also blog them).</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/10/30/one-handed-computing.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/10/30/one-handed-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Airport Signage and the Tab Control</title>
		<link>http://www.globalnerdy.com/2009/10/07/airport-signage-and-the-tab-control/</link>
		<comments>http://www.globalnerdy.com/2009/10/07/airport-signage-and-the-tab-control/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 00:34:10 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[What Joey Did]]></category>
		<category><![CDATA[signs]]></category>
		<category><![CDATA[tab control]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/10/07/airport-signage-and-the-tab-control/</guid>
		<description><![CDATA[While flying home from TechDays Vancouver, something on the sign pointing the way to the gates caught my eye. Note the screen on the right:
 
Here’s a closer look:

 
It’s an interesting use for a tab control. The content of each tab page is the same, but each one shows that content in a different [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>While flying home from <a href="http://techdays.ca/">TechDays</a> Vancouver, something on the sign pointing the way to the gates caught my eye.</strong> Note the screen on the right:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Gate signs at Vancouver airport, featuring a multilingual LCD sign using a tab control" border="0" alt="Gate signs at Vancouver airport, featuring a multilingual LCD sign using a tab control" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/tabbedairportsign1.jpg" width="600" height="399" /> </p>
<p>Here’s a closer look:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Close-up of the LCD sign featuring the multilingual tab control" border="0" alt="Close-up of the LCD sign featuring the multilingual tab control" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/tabbedairportsign2.jpg" width="600" height="399" /></p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LOLcat: &quot;I see what you did there&quot;" border="0" alt="LOLcat: &quot;I see what you did there&quot;" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/10/iseewhatyoudidthere.jpg" width="150" height="144" /> </p>
<p><strong>It’s an interesting use for a tab control.</strong> The content of each tab page is the same, but each one shows that content in a different language: Japanese, Korean and Hindi (I have no idea why there’s no Chinese; there are lots of Chinese visitors at Vancouver airport). The sign cycles through each tab page, displaying each one for about 10 seconds before switching to the next one. </p>
<p><strong>Is it an appropriate use for a tab control?</strong> My guess is that user interface/user experience types (Qixing, if you’re reading this, feel free to chime in) would say “no”. I say “no”, myself. It’s based mostly on a gut feeling, but a little thinking provides me with some rationale, which includes:</p>
<ul>
<li><strong>There’s so little information on each tab.</strong> The purpose of a tab control is to break down a large or complex set of controls into more manageable groups, which in the world of&#160; .NET controls are called ”tab pages”. The current tab page, which shows something in Hindi, has no more than a line of tex,t, and the same is true for the Japanese and Korean tabs. They could’ve shown all three languages on a single screen. </li>
<li><strong>Tab controls imply interactivity.</strong> The tabs in a tab control are for all intents and purposes buttons. Buttons imply interactivity: you click them and something happens. The same is true for tabs: you click a tab and its tab page becomes the frontmost one. These tabs aren’t clickable at all; they’re just being used to show you what languages the sign uses. Using a tab control in this fashion seems like using a button as a label. It gets the job done, but it is the best way? </li>
</ul>
<p><strong>What do you think?</strong> Feel free to <a href="http://www.thefreedictionary.com/Opine">opine</a> in the comments.</p>
<p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/10/07/airport-signage-and-the-tab-control.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/10/07/airport-signage-and-the-tab-control/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lessons from an Air Pump</title>
		<link>http://www.globalnerdy.com/2009/08/10/lessons-from-an-air-pump/</link>
		<comments>http://www.globalnerdy.com/2009/08/10/lessons-from-an-air-pump/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 13:17:03 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[What Joey Did]]></category>
		<category><![CDATA[Social Software]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/08/10/lessons-from-an-air-pump/</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection.
The Incident
I live in Toronto’s High Park neighbourhood, which puts me at that magical distance where biking downtown takes a half-hour, about as long as public transit. If weather isn’t downright terrible and I don’t have too much to carry – say, laptop, change of clothes and even [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/08/10/lessons-from-an-air-pump.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
<h3>The Incident</h3>
<p>I live in Toronto’s <a href="http://en.wikipedia.org/wiki/High_Park_North">High Park neighbourhood</a>, which puts me at that magical distance where biking downtown takes a half-hour, about as long as public transit. If weather isn’t downright terrible and I don’t have too much to carry – say, laptop, change of clothes and even an accordion &#8212; I tend to take my bike.</p>
<p>Cycling is much easier with a pair of properly-inflated tires, so I often make use of the air pump at the gas station near my house:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="air_pump_1" border="0" alt="air_pump_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/air_pump_1.jpg" width="338" height="450" /></p>
<p>Gas stations used to give you air for free, but these days, you have to pay to use an air pump – presumably to cover the cost of their upkeep. At the gas station near my house, a dollar gets you enough time to inflate all the tires on a car, which is plenty of time for a bike’s tires. You can use either a loonie (that’s “dollar coin” to you readers outside Canada) or four quarters.</p>
<p>Take a look at&#160; the coin slots for the air pump at the gas station near my house:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="air_pump_2" border="0" alt="air_pump_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/air_pump_2.jpg" width="338" height="450" /></p>
<p><strong>Although the left and right coin slots are identical in size and appearance, they are for different types of coins:</strong></p>
<ul>
<li>The left slot is marked “dollar coin” and is for loonies (that’s “dollar coins” to you non-Canadian readers) only. </li>
<li>The right slot is marked “4 quarters” and is for quarters only. </li>
</ul>
<p>It’s the worst combination of usability factors: identical slots that serve different purposes.</p>
<p>I reached into my pocket and pulled out some quarters. Without thinking, I put quarter in the dollar coin slot, realizing my mistake a little too late. The machine accepted the coin and didn’t route it to the “coin return” compartment. In fact, the machine didn’t even have a coin return compartment.</p>
<p><strong>I wondered what would happen if I put three more quarters in the dollar coin slot.</strong> After all, the sticker might be wrong.. It wasn’t – I put in the remaining quarters and the air pump remained off. Luckily, I had four more quarters. I put those in the quarter slot and the machine came to life, providing compressed air for my tires.</p>
<p>Out of principle, I went to the gas station attendant and asked for the dollar I’d lost to the air pump back. He was resistant at first, but as soon as I said “Geez, you guys are a rip-off. I should post that on Twitter,” he quickly capitulated and reimbursed me.</p>
<h3>The Lessons</h3>
<p>Because I am in the business of talking about software development and design, I was inspired to turn the experience into a blog article (eight years of blogging will do that). I took photos of the air pump and derived two lessons.</p>
<h4>Lesson One: Interface Matters!</h4>
<p><strong>If two things expect different input, they should appear different.</strong> The coin slots on the air pump are the same size. Although the sticker on the machine has markings that say that the left slot is for loonies and the right slot is for quarters, those markings are almost identical. Possible solutions include: </p>
<ul>
<li><strong>Differently-sized coin slots:</strong> a larger slot for loonies, a smaller slot for quarters. Older coin-operated machines made use of these: </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="old_school_coin_slot" border="0" alt="old_school_coin_slot" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/old_school_coin_slot.jpg" width="225" height="300" /></p>
<ul>
<li><strong>A new sticker,</strong> perhaps with some colour coding to make it very clear that each coin slot expects very different kinds of coins.&#160; </p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="new_coin_slot_sticker" border="0" alt="new_coin_slot_sticker" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/new_coin_slot_sticker3.jpg" width="242" height="300" /> </li>
</ul>
</p>
<p><strong>Be forgiving of user mistakes:</strong> </p>
<ul>
<li><strong>Both slots should accept either loonies or quarters.</strong> This solution is even better than differently-size coin slots or a new sticker. The constraint that one slot is for loonies and the other for quarters is a convenience for the manufacturer, not the user. Go the extra mile – after all, coin recognition technology isn’t anything new or hard to get.       </p>
<p>Most coin-operated machines that provide more than one coin slot, such as videogames and pinball machines at arcades, don’t “care” which one you use. Either coin slot will do, as long as you provide enough coins:       <br /> 
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="arcade_coin_slot" border="0" alt="arcade_coin_slot" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/08/arcade_coin_slot.jpg" width="360" height="300" /></p>
</li>
<li><strong>There should be a coin return slot.</strong> The current design simply takes your money and doesn’t let you cancel the transaction. </li>
</ul>
<p><strong>Simplify!</strong> Once you put in a coin slot that accepts loonies and quarters, there’s no need for a second coin slot – a single one will do. </p>
<p><strong>The lesson of “interface matters” doesn’t just apply to user interface;</strong> they’re just as applicable to application interfaces, from method signatures to whole APIs. It pays to be clear and comprehensible.</p>
<h4>Lesson Two: Social Software Matters (at least to some people)</h4>
<p>The second lesson? Never underestimate the power of social networking software. The gas station attendant wouldn’t budge, but I saw him constantly checking his smartphone and guessed that he might be into Twitter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/08/10/lessons-from-an-air-pump/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Fast Food Apple Pies and Why Netbooks Suck</title>
		<link>http://www.globalnerdy.com/2009/05/26/fast-food-apple-pies-and-why-netbooks-suck/</link>
		<comments>http://www.globalnerdy.com/2009/05/26/fast-food-apple-pies-and-why-netbooks-suck/#comments</comments>
		<pubDate>Tue, 26 May 2009 04:00:00 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[netbooks]]></category>
		<category><![CDATA[network computers]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/05/26/fast-food-apple-pies-and-why-netbooks-suck/</guid>
		<description><![CDATA[If you’re pressed for time, the graphic below – which takes its inspiration from these articles by Kathy “Creating Passionate Users” Sierra &#8212; captures the spirit of this article rather nicely:

If you have a little more time to spare, I’m going to explain my belief that while netbooks have a nifty form factor, they’re not [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you’re pressed for time, the graphic below – which takes its inspiration from <a href="http://headrush.typepad.com/creating_passionate_users/2006/10/dilbert_and_the.html">these</a> <a href="http://headrush.typepad.com/creating_passionate_users/2006/11/the_zone_of_exp.html">articles</a> by <a href="http://headrush.typepad.com/creating_passionate_users/">Kathy “<em>Creating Passionate Users</em>” Sierra</a> &#8212; captures the spirit of this article rather nicely:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/smartphone-netbook-laptop.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Kathy Sierra-esque graph showing  the relative positions of the smartphone (great for when you&#39;re on the go), the laptop (great for when you&#39;re sitting down) and in between, the netbook (zone of suck)" border="0" alt="Kathy Sierra-esque graph showing  the relative positions of the smartphone (great for when you&#39;re on the go), the laptop (great for when you&#39;re sitting down) and in between, the netbook (zone of suck)" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/smartphone-netbook-laptop-thumb.jpg" width="559" height="325" /></a></p>
<p>If you have a little more time to spare, <strong>I’m going to explain my belief that while netbooks have a nifty form factor, they’re not where the mobile computing action is.</strong></p>
<h3>A Tale of Two Pies</h3>
<p>When I was <a href="http://queensu.ca/">Crazy Go Nuts University’s</a> second most notorious perma-student (back in the late ‘80s/early ‘90s), I took a handful of business courses at the recommendation of my engineering and computer science professors. “You’re going to have to learn to speak the suits’ language,” they said. Crazy Go Nuts University has a renowned business school and I thought it would be a waste not to take at least a couple of business courses. I especially liked the Marketing couse, and one lecture stands out in my mind: a case study comparing the dessert offerings of two major fast food chains.</p>
<p>In the interest of not attracting the attention of their lawyers, I’m going to refer to the chains as:</p>
<ul>
<li><strong>Monarch Burger</strong>, whose mascot is a mute monarch with a glazed-over face, wearing a crown and associated paraphernalia, and </li>
<li><strong>Jester Burger</strong>, whose mascot is a clown in facepaint and a brightly-coloured jumpsuit who loves to sing and dance. </li>
</ul>
<p>Both Monarch Burger and Jester Burger offered a dessert that went by the name “apple pie”. Let’s examine them.</p>
<h4>Monarch Burger’s Pie</h4>
<p><strong><img style="border-right-width: 0px; margin: 10px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Monarch Burger&#39;s apple pie: a slice of pie served in a wedge-shaped box" border="0" alt="Monarch Burger&#39;s apple pie: a slice of pie served in a wedge-shaped box" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/monarch-burger-apple-pie.jpg" width="150" height="150" /> </strong>Monarch Burger went to the trouble of making their apple pie look like a slice of homemade apple pie. While it seems appealing in its photo on the menu, it sets up a false expectation. <strong>It may <em>look</em> like a slice of homemade apple pie, but it certainly doesn’t <em>taste</em> like one. Naturally, it flopped.</strong> Fast-food restaurants are set up to be run not by trained chefs, but by a low-wage, low-skill, disinterested staff. As a result, their food preparation procedures are designed to run on little thinking and no passion. They’re not set up to create delicious homemade apple pies.</p>
<h4>Jester Burger’s Pie</h4>
<p><img style="border-right-width: 0px; margin: 10px auto 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Jester Burger&#39;s apple pie: a tube of pastry, whose skin is pocked from deep-frying" border="0" alt="Jester Burger&#39;s apple pie: a tube of pastry, whose skin is pocked from deep-frying" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/jester-burger-apple-pie.jpg" width="500" height="375" /> </p>
<p>Jester Burger’s approach was quite different. Their dessert is called “apple pie”, but it’s one in the loosest sense. It’s apple pie filling inside a pastry shell shaped like the photon torpedo casings from <em>Star Trek</em>. In the 70s and 80s, the pastry shell had bubbles all over it because it wasn’t baked, but deep-fried. After all, their kitchens already had deep fryers aplenty – why not use them?</p>
<p><strong>Unlike Monarch Burger’s offering, Jester Burger’s sold well because it gave their customers a dessert reminiscent of an apple pie without setting up any expectations for real apple pie.</strong> </p>
<p>Jester Burger’s pie had an added bonus: unlike Monarch Burger’s pie, which was best eaten with a fork, Jester Burger’s pie was meant to be held in your hand, just like their burgers and fries.</p>
<p>At this point, I am obliged to remind you that this isn’t an article about 1980s-era desserts at fast food burger chains. It’s about netbooks and smartphones, but keep those pies in mind…</p>
<h3>Netbooks are from Monarch Burger…</h3>
<p><strong>Netbooks remind me of Monarch Burger’s apple pie.</strong> Just as Monarch Burger tried to take the standard apple pie form and attempt to fit it into a fast food menu, the netbook approach tries to take the standard laptop form and attempt to fit it into mobile computing. The end result, to my mind, is a device that occupies an uncomfortable, middle ground between laptops and smartphones that tries to please everyone and pleases no one. Consider the factors:</p>
<ul>
<li><strong>Size:</strong> A bit too large to go into your pocket; a bit too small for regular day-to-day work. </li>
<li><strong>Power:</strong> Slightly more capable than a smartphone; slightly less capable than a laptop. </li>
<li><strong>Price: </strong>Slightly higher than a higher-end smartphone but lacking a phone’s capability and portability; slightly lower than a lower-end notebook but lacking a notebook’s speed and storage. </li>
</ul>
<p>To summarize: Slightly bigger and pricier than a phone, but can’t phone. Slightly smaller and cheaper than a laptop, but not that much smaller or cheaper. To adapt a phrase I used in <a href="http://www.globalnerdy.com/2009/05/25/mental-models-mantras-and-my-mission/">an article I wrote yesterday</a>, <strong>netbooks are like laptops, but lamer.</strong></p>
<h3>Network Computers and Red Herrings</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Sun&#39;s &quot;JavaStation&quot; network computer" border="0" alt="Sun&#39;s &quot;JavaStation&quot; network computer" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/sun-javastation.jpg" width="600" height="252" /> </p>
<p>The uncomfortable middle ground occupied by the netbook reminds me of another much-hyped device that flopped &#8211; the network computer, which also went by the name &quot;thin client&quot;. In the late 90s, a number of people suggested that desktop computers, whose prices started at the mid-$1000 range in those days, would be replaced by inexpensive diskless workstations. These machines would essentially be the Java-era version of what used to be called &quot;smart terminals&quot;, combining local processing power with network-accessed storage of programs and data. </p>
<p>A lot of the ideas behind the network computer ended up in today&#8217;s machines, even if the network computer itself didn&#8217;t. Part of the problem was the state of networking when the NC was introduced; back then, broadband internet access was generally the exception rather than the rule. Another major factor was price &#8211; desktop and even laptop computers prices fell to points even lower than those envisioned for NCs. Finally, there was the environment in which the applications would run. Everyone who was betting on the NC envisioned people running Java apps pushed across the network, but it turned out that the things they had dismissed as toys &#8212; the browser and JavaScript, combining to form the juggernaut known as Ajax &#8212; ended up being where applications &quot;lived&quot;.</p>
<p>When I look at netbooks, I get network computer <em>deja vu</em>. I see a transitory category of technology that will eventually be eclipsed. I think that laptops will eventually do to netbooks what desktop machines did to network computers: evolve to fill their niche. Just as there are small-footprint desktop computers that offer all the functionality and price point of a network computer along with the benefits of local storage, I suspect that what we consider to be a netbook today will be just another category of laptop computer tomorrow.</p>
<p><img style="border-right-width: 0px; margin: 0px auto 10px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="A netbook displaying a picture of a red herring on its screen" border="0" alt="A netbook displaying a picture of a red herring on its screen" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/netbook-red-herring5.jpg" width="217" height="240" /></p>
</p>
<p>I’m going to go a little farther, beyond stating that netbooks are merely the present-day version of the network computer. I’m going to go beyond saying that while their form factor is a little more convenient than that of a laptop, the attention they’re getting – there’s a lot of hoo-hah about who’s winning in the netbook space, Windows or Linux &#8211;&#160; is out of proportion to their eventual negligible impact. <strong>I’m going to go out on a limb and declare them to be a dangerous <a href="http://en.wikipedia.org/wiki/Red_herring_(idiom)">red herring</a>, a diversion from where the <em>real</em> mobile action is.</strong>&#160;&#160; </p>
<h3>…and Smartphones are from Jester Burger</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Southern Chicken Place&#39;s apple pie, which looks a lot like Jester Burger&#39;s apple pie" border="0" alt="Southern Chicken Place&#39;s apple pie, which looks a lot like Jester Burger&#39;s apple pie" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/southern-chicken-place-pie.jpg" width="600" height="450" /> </p>
<p><strong>A quick aside:</strong> The photo above is <em>not</em> of a Jester Burger fried apple pie. In response to their customers’ so-called health concerns (really, if those concerns were real, they’d stop eating there), they started phasing out the fried pies in 1992 in favour of the baked kind. There are still some branches of Jester Burger that carry the fried pies, but a more reliable source is a fast food chain that I’ll refer to as “Southern Chicken Place”, or SCP for short. Those pies in the photo above? They’re from SCP.</p>
<p>Jester Burger made no attempt to faithfully replicate a homemade apple pie when they made their dessert. Instead, they engineered something that was “just pie enough” and also matched the environment in which it would be prepared (a fast food kitchen, which didn’t have ovens but had deep fryers) and the environment in which it would be eaten (at a fast food restaurant table or in a car, where there isn’t any cutlery and everything is eaten with your hands). <strong>The Jester Burger pie fills a need without pretending to be something it’s not, and I think smartphones do the same thing.</strong></p>
<p>Smartphones are truly portable. They <em>really</em> fit into your pocket or hang nicely off your belt, unlike netbooks:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Two Japanese models trying to stuff a Sony Vaio netbook into their pockets" border="0" alt="Two Japanese models trying to stuff a Sony Vaio netbook into their pockets" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/pocket-vaio.jpg" width="500" height="370" /> </p>
<p>And smartphones are meant to be used while you’re holding them:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Captain Kirk, his communicator and the iPhone" border="0" alt="Captain Kirk, his communicator and the iPhone" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/kirk-communicator-iphone.jpg" width="400" height="209" /></p>
</p>
<p>Just try that with a netbook. In order to <em>really</em> use one, you’ve got to set it down on a flat surface:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Guy using his netbook, perched on the roof of his car...with a stylus, no less!" border="0" alt="Guy using his netbook, perched on the roof of his car...with a stylus, no less!" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/guymessingwithnetbook.jpg" width="240" height="240" /> </p>
<p>The best smartphones make no attempt to faithfully replicate the laptop computer experience in a smaller form. Instead, they’re “just computer enough” to be useful, yet better fit the on-the-go situations in which they will be used. They also incorporate mobile phones and MP3s – useful, popular and familiar devices &#8212; and the best smartphones borrow tricks from their user interfaces.</p>
<p><strong>Smartphones, not netbooks, are where the real advances in mobile computing will be made.</strong></p>
<h3>Smartphone vs. Netbook: The People Have Chosen</h3>
<p>One again, the thesis of this article, in graphic form:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Same graph as the earlier Kathy Sierra-esque one at the start of the article." border="0" alt="Same graph as the earlier Kathy Sierra-esque one at the start of the article." src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/smartphone-netbook-laptop-thumb.jpg" width="559" height="325" /></p>
<p>In the late 80s and early 90s, the people chose the fast food apple pie they wanted: the convenient, if not exactly apple pie-ish Jester Burger pie over Monarch Burger’s more-like-the-real-thing version.</p>
<p><strong>When people buy a smartphone, which they’ve been doing like mad, they’re buying their primary mobile phone.</strong> It’s the mobile phone and computing platform that they’re using day in and day out and the device that they’re pulling out of their pockets, often to the point of interrupting conversations and <a href="http://kdka.com/national/trolley.crash.boston.2.1005125.html">crashing the trolley they’re operating</a>.</p>
<p><strong>When people buy a netbook, they’re often not buying their primary machine.</strong> It’s a second computer, a backup device that people take when their real machine – which is often a laptop computer that isn’t much larger or more expensive – seems like too much to carry. It’s a luxury that people might ditch if the current economic situation continues or worsens and as the differences between laptops and netbooks vanish. Netbooks, as a blend of the worst of both mobile and laptop worlds, will be a transitional technology; at best, they’ll enjoy a brief heyday similar to that of the fax machine.</p>
<p><strong>The people are going with smartphones, and as developers, you should be following them.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/05/26/fast-food-apple-pies-and-why-netbooks-suck/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Joel Spolsky: Learning from StackOverflow.com</title>
		<link>http://www.globalnerdy.com/2009/05/03/joel-spolsky-learning-from-stackoverflowcom/</link>
		<comments>http://www.globalnerdy.com/2009/05/03/joel-spolsky-learning-from-stackoverflowcom/#comments</comments>
		<pubDate>Sun, 03 May 2009 20:03:14 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[anthropology]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Joel Spolsky]]></category>
		<category><![CDATA[peopleware]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[sociology]]></category>
		<category><![CDATA[Stack Overflow]]></category>
		<category><![CDATA[Stackoverflow.com]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[user-centric design]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/05/03/joel-spolsky-learning-from-stackoverflowcom/</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection.
Just in case there’s nothing good on TV and you’re having a “lazy Sunday”, here’s a video of Joel Spolsky’s recent presentation at Google, Learning from StackOverflow.com, in which he talks about the design decisions that went into and the lessons learned from the Stack Overflow site. It [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/05/03/joel-spolsky-learning-from-stackoverflow-com.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
<p>Just in case there’s nothing good on TV and you’re having a “lazy Sunday”, here’s a video of <strong><a href="http://joelonsoftware.com/">Joel Spolsky’s</a></strong> recent presentation at Google, <em><strong><a href="http://www.youtube.com/watch?v=NWHfY_lvKIQ">Learning from StackOverflow.com</a></strong></em>, in which he talks about the design decisions that went into and the lessons learned from the <em><strong><a href="http://stackoverflow.com/">Stack Overflow</a></strong></em> site. It runs for about 52 minutes, so you might want to get yourself a nice beverage before you watch it:</p>
<p align="center"><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/NWHfY_lvKIQ&amp;hl=en&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NWHfY_lvKIQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/05/03/joel-spolsky-learning-from-stackoverflowcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upwardly Mobile, Part 3: Exploring Windows Mobile 6&#8217;s Built-In UI Controls</title>
		<link>http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/</link>
		<comments>http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/#comments</comments>
		<pubDate>Sat, 02 May 2009 03:45:00 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Upwardly Mobile]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=3342</guid>
		<description><![CDATA[&#160; 
In my previous article in Upwardly Mobile, the ongoing article series in which I look as various aspects of Windows Mobile 6 development, I showed you a simple application that made use of a couple of user interface controls. In this article, we’ll take a closer look at some of the user interface controls [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>&#160;<img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Mad Mobile: More Windows Mobile 6 example code from the guy who blogs at Global Nerdy" border="0" alt="Mad Mobile: More Windows Mobile 6 example code from the guy who blogs at Global Nerdy" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/mad-mobile.jpg" width="600" height="351" /> </p>
<p>In my <a href="http://www.globalnerdy.com/2009/04/16/upwardly-mobile-part-2-your-first-windows-mobile-6-application/">previous article</a> in <em><strong><a href="http://www.globalnerdy.com/tag/upwardly-mobile/">Upwardly Mobile</a></strong></em>, the ongoing article series in which I look as various aspects of Windows Mobile 6 development, I showed you a simple application that made use of a couple of user interface controls. In this article, we’ll take a closer look at some of the user interface controls by way of the steak-and-cocktails lifestyle of the characters on the TV series <em><a href="http://www.amctv.com/originals/madmen/">Mad Men</a></em>.</p>
<p>(In case you’re not familiar with <em>Mad Men</em>, it’s a dramatic TV series set in the early 1960s whos emain characters are advertising executives working at an agency in New York. It was the age of three-martini steak lunches, which serves as the inspiration for the example application in this article.)</p>
<h3>Introducing Beef ‘N’ Booze</h3>
<p>The application that we’ll build is called <em><strong>Beef ‘N’ Booze</strong></em>. It has no real function other than to demonstrate the use of some of the controls that come with Windows Mobile 6, and do so in a more entertaining way that you’d normally find in a book.</p>
<p>Here’s what the app will look like on startup:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="beef_screen_1" border="0" alt="beef_screen_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beef-screen-1.gif" width="324" height="323" /></p>
<p>The app has a single form and that form is filled completely with a tab control with two tab pages: <strong>Beef</strong> and <strong>Booze</strong>. The <strong>Beef</strong> page lets you choose the “doneness” of your steak as well as a selection of side dishes. Once you’ve made your choices, you click the <strong>Place Order</strong> button to see a message box containing a summary of your order: </p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="beef_screen_2" border="0" alt="beef_screen_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beef-screen-2.gif" width="325" height="329" /></p>
<p>Clicking on the <strong>Booze</strong> tab takes you to the <strong>Booze</strong> page, where you can place an order from a selection of cocoktails. You can also specify the number of cocktails you want to order and how strong you want the bartender to make them:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="booze_screen_1" border="0" alt="booze_screen_1" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/booze-screen-1.gif" width="326" height="327" /></p>
<p>When you’ve made your drink choices, you click on the <strong>Place Order</strong> button to see a message box summarizing your drink order:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="booze_screen_2" border="0" alt="booze_screen_2" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/booze-screen-2.jpg" width="324" height="319" /></p>
<p>That’s the app in a nutshell. Remember that the idea behind <em>Beef ‘N’ Booze </em>isn’t to make something useful; it’s to demonstrate Windows Mobile’s built-in user controls and give you a chance to explore them. With that knowledge and a little practice, you can eventually build apps that actually <em>do</em> something.</p>
<h3>TabControl and TabPages</h3>
<p>One of the tricks to compensate for the limited screen “real estate” on a mobile device is to break up an application into pages. The simplest “out of the box” way to do this with Windows Mobile is to use a <strong>TabControl</strong>, which is a container that holds one or more <strong>TabPage</strong> controls. Each TabPage is itself a container that can hold other controls.</p>
<p>In <em>Beef ‘N’ Booze</em>, I created a TabControl named <code>tabMain</code>, which holds two TabPages: </p>
<ul>
<li><strong><code>tpgBeef</code></strong>, whose <code>Text</code> property is set to <code>Beef</code>. It will contain the controls for placing and order for a steak and side dishes. </li>
<li><strong><code>tpgBooze</code></strong>, whose <code>Text</code> property is set to <code>Booze</code>. It will contain the controls for ordering cocktails. </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="tabcontrol_tabpages" border="0" alt="tabcontrol_tabpages" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/tabcontrol-tabpages.gif" width="600" height="380" /> </p>
<p>One convenient thing about using TabControls is that the tabbed pages work inside Visual Studio’s form editor. To view and edit a given TabPage, you click on its tab; it becomes the topmost page and you can add, move and remove controls from it.</p>
<h3>Buttons</h3>
<p>The Beef page has a single button, <strong><code>btnBeef</code></strong>, that when clicked, causes a message box to display the user’s order for steak and side dishes. The Booze page has a similar button, <strong><code>btnBooze</code></strong>, except that it causes a message box to display the user’s cocktail order.</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="buttons" border="0" alt="buttons" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/buttons.gif" width="600" height="363" /> </p>
<p>We’ll draw <code>btnBeef</code> on the <code>tpgBeef</code> page and <code>btnBooze</code> on the <code>tpgBooze</code> page. The next step is to create event handlers for both buttons. The easiest way to do this is to select each button and then use the <strong>Events</strong> view in the <strong>Properties</strong> window, and double-clicking on the <code>Click</code> event for each button. Here’s a screenshot of me doing that for btnBeef – Visual Studio responds by auto-magically creating a handler named <strong><code>btnBeef_Click</code></strong>:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/btnbeef.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="btnBeef" border="0" alt="btnBeef" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/btnbeef-thumb.gif" width="341" height="321" /></a></p>
<p>Creating event handlers for <code>btnBeef</code> and <code>btnBooze</code> creates these empty methods in the code for the form:</p>
<p> <code>
<pre>private void btnBeef_Click(object sender, EventArgs e)
{
}

private void btnBooze_Click(object sender, EventArgs e)
{
}</pre>
<p></code></p>
<p>While I do like the “magic” provided by Visual Studio, I also feel that you should know what’s going on behind the scenes. How are the <code>btnBeef_Click()</code> and <code>btnBoozeClick()</code> methods attached to the btnBeef and btnBooze controls? It’s taken care of in the Designer code for the form, in which the layout and events for controls on the form is defined. Here’s the chunk of code that concerns with <code>btnBeef</code>’s properties and events:</p>
<p><code></p>
<pre>this.btnBeef.Font = new System.Drawing.Font(&quot;Tahoma&quot;, 8F, System.Drawing.FontStyle.Regular);
this.btnBeef.Location = new System.Drawing.Point(165, 181);
this.btnBeef.Name = &quot;btnBeef&quot;;
this.btnBeef.Size = new System.Drawing.Size(111, 28);
this.btnBeef.TabIndex = 8;
this.btnBeef.Text = &quot;Place Order&quot;;
this.btnBeef.Click += new System.EventHandler(this.btnBeef_Click);</pre>
<p></code></p>
<p>When I added a <code>Click</code> event to <code>btnBeef</code> through the <strong>Properties</strong> window, Visual Studio generated the name <code>btnBeef_Click</code> for the event handler, added a blank <code>btnBeef_Click()</code> method to the form’s code and connected the event to the handler in the form’s Designer code with this line:</p>
<p><code></p>
<pre>this.btnBeef.Click += new System.EventHandler(this.btnBeef_Click);</pre>
<p></code></p>
<p>When the user clicks <code>btnBeef</code>, we want to call a method named <strong><code>OrderBeef()</code></strong>, which will collect the data from the controls on <code>tpgBeef</code>, format it into something human-readable and then display the results in a message box. When the user clicks <code>btnBooze</code>, we want to call a method name <strong><code>OrderBooze()</code></strong>, which will do something similar, but for the user’s cocktail order. Here’s what the resulting event handler code should look like:</p>
<p><code></p>
<pre>private void btnBeef_Click(object sender, EventArgs e)
{
    OrderBeef();
}

private void btnBooze_Click(object sender, EventArgs e)
{
    OrderBooze();
}</pre>
<p></code></p>
<p>We&#8217;ll define <code>OrderBeef()</code> and <code>OrderBooze()</code> over the next couple of sections, as we explore the controls. </p>
<h3>Radio Buttons</h3>
<p>Radio buttons are controls you use when:</p>
<ul>
<li>You want the user to choose one (and only one) item from a selection of items </li>
<li>You want the user to be able to see the complete selection of items immediately </li>
</ul>
<p>The name “radio buttons” comes from the radio buttons from older radios, such as those in older cars, which let you choose from a number of pre-set radio stations. Selecting one button would change the tuning to the corresponding radio station and de-select the currently selected button:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="car_radio_buttons" border="0" alt="car_radio_buttons" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/car-radio-buttons.jpg" width="450" height="285" /> </p>
<p>Radio buttons are grouped together by putting them inside the same container control, such as a panel, or in the case of this particular application, a TabPage. Selecting a radio button de-selects all the other radio buttons occupying the same container control.</p>
<p>The diagram below shows the radio buttons on <code>tpgBeef</code> and the names I assigned to them:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="radio_buttons" border="0" alt="radio_buttons" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/radio-buttons.gif" width="493" height="325" /></p>
<p>Here&#8217;s my first iteration of <code>OrderBeef()</code>, which shows you how to determine which radio button is selected by checking each one’s <code>Checked</code> property. Once that’s done, it displays the resulting choice in a message box:</p>
<p><code></p>
<pre>private void OrderBeef()
{
    StringBuilder order = new StringBuilder(&quot;Steak: &quot;);

    if (rdoRare.Checked)
    {
        order.AppendLine(&quot;Rare&quot;);
    }
    else if (rdoMediumRare.Checked)
    {
        order.AppendLine(&quot;Medium Rare&quot;);
    }
    else if (rdoMedium.Checked)
    {
        order.AppendLine(&quot;Medium&quot;);
    }
    else if (rdoMediumWell.Checked)
    {
        order.AppendLine(&quot;Medium Well&quot;);
    }
    else if (rdoWellDone.Checked)
    {
        order.AppendLine(&quot;Well Done&quot;);
    }
    else
    {
        order.AppendLine(&quot;Chef's choice&quot;);
    }

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Checkboxes</h3>
<p>Checkboxes are useful when:</p>
<ul>
<li>You want the user to select zero, one or more items </li>
<li>You want the user to be able to see the complete selection of items immediately </li>
</ul>
<p>The diagram below shows the checkboxes on <code>tpgBeef</code> and the names I assigned to them:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="checkboxes" border="0" alt="checkboxes" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/checkboxes.gif" width="520" height="325" /> </p>
<p>Here&#8217;s my second iteration of <code>OrderBeef()</code>, which adds some code to check to see which side dishes the user ordered. As with radio buttons, we’re using the <code>Checked</code> properties, but for the checkboxes:</p>
<p><code></p>
<pre>private void OrderBeef()
{
    StringBuilder order = new StringBuilder(&quot;Steak: &quot;);
    int numSides = 0;

    if (rdoRare.Checked)
    {
        order.AppendLine(&quot;Rare&quot;);
    }
    else if (rdoMediumRare.Checked)
    {
        order.AppendLine(&quot;Medium Rare&quot;);
    }
    else if (rdoMedium.Checked)
    {
        order.AppendLine(&quot;Medium&quot;);
    }
    else if (rdoMediumWell.Checked)
    {
        order.AppendLine(&quot;Medium Well&quot;);
    }
    else if (rdoWellDone.Checked)
    {
        order.AppendLine(&quot;Well Done&quot;);
    }
    else
    {
        order.AppendLine(&quot;Chef's choice&quot;);
    }

    order.AppendLine(&quot;Sides:&quot;);

    if (chkCreamedSpinach.Checked)
    {
        order.AppendLine(&quot;Creamed Spinach&quot;);
        ++numSides;
    }

    if (chkFrites.Checked)
    {
        order.AppendLine(&quot;Frites&quot;);
        ++numSides;
    }

    if (chkMushrooms.Checked)
    {
        order.AppendLine(&quot;Mushrooms&quot;);
        ++numSides;
    }

    if (numSides == 0)
    {
        order.AppendLine(&quot;None&quot;);
    }

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Comboboxes</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="comboboxes" border="0" alt="comboboxes" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/comboboxes.gif" width="442" height="325" /> </p>
<p>For the <strong>Booze</strong> page, I thought I’d use a different way to let the user select one item from a selection of many: a Combobox with its <code>DropDownStyle</code> property set to <code>DropDownList</code> and containing a number of cocktail names. The method below does the following:</p>
<ul>
<li>Sets the Combobox’s <code>DropDownStyle</code> property to <code>DropDownList</code>, which means that the user <em>cannot</em> just type in any value into the list’s text portion, but can only select from items in the list. </li>
<li>Adds a number of cocktail names to the list. </li>
<li>Sets the list so that the first item is selected. </li>
</ul>
<p><code></p>
<pre>public void InitializeCocktailControls()
{
    cboCocktail.DropDownStyle = ComboBoxStyle.DropDownList;
    cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
    cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
    cboCocktail.Items.Add(&quot;Martini&quot;);
    cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
    cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
    cboCocktail.SelectedIndex = 0;
}</pre>
<p></code></p>
<p>If I wanted to, I could’ve set the <code>DropDownStyle</code> and the collection of items in the ComboBox in the <strong>Properties</strong> window.</p>
<p>I placed a call to <code>InitializeCocktailControls()</code> inside the form&#8217;s constructor:</p>
<p><code></p>
<pre>public frmMain()
{
    InitializeComponent();
    InitializeCocktailControls();
}</pre>
<p></code></p>
<p>And here&#8217;s my first iteration of <code>OrderBooze()</code>, which displays a message box showing which cocktail the user ordered. It makes use of the ComboBox’s <code>SelectedItem</code> property:</p>
<p><ocde></p>
<pre>private void OrderBooze()
{
    StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                            cboCocktail.SelectedItem.ToString() +
                            &quot;\n&quot;);

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Numeric Up/Downs</h3>
<p>Numeric Up/Downs are useful when:</p>
<ul>
<li>You want to restrict user input to numeric values only </li>
<li>You want to restrict those numeric values to a specific range </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="numeric_updowns" border="0" alt="numeric_updowns" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/numeric-updowns.gif" width="442" height="325" /></p>
<p>Here's the second iteration of <code>InitializeCocktailControls()</code>, which adds code to initialize the numeric up/down <code>nudCocktail</code> in the following ways:</p>
<ul>
<li>Restricting the possible values to the range of 1 through 10 </li>
<li>Setting the up/down increment to 1 – if the user clicks the “up” button, the value contained within goes up by 1, if the user clicks the “down” button, the value contained within goes down by 1. </li>
<li>Setting the initial value to 1 </li>
</ul>
<p><code></p>
<pre>public void InitializeCocktailControls()
{
    cboCocktail.DropDownStyle = ComboBoxStyle.DropDownList;
    cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
    cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
    cboCocktail.Items.Add(&quot;Martini&quot;);
    cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
    cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
    cboCocktail.SelectedIndex = 0;

    nudCocktail.Minimum = 1;
    nudCocktail.Maximum = 10;
    nudCocktail.Increment = 1;
    nudCocktail.Value = 1;
}</pre>
<p></code></p>
<p>Here's the <code>OrderBooze()</code> method, featuring an additional line of code to display the number of drinks the user ordered. The value contained within <code>nudCocktail</code> is taken from its <code>Value</code> property:</p>
<p><code></p>
<pre>private void OrderBooze()
{
    StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                            cboCocktail.SelectedItem.ToString() +
                            &quot;\n&quot;);
    order.AppendLine(&quot;Quantity: &quot; + nudCocktail.Value.ToString());

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Trackbars</h3>
<p>Another way to get numeric value input from the user is to use a Trackbar control. While Trackbars don’t display their corresponding numeric values like Numeric Up/Downs, they have a couple of advantages:</p>
<ul>
<li>They’re larger and more “finger-friendly” than Numeric Up/Downs </li>
<li>They give the user a visual cue of where the current value is in relation to the minimum and maximum values </li>
</ul>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="trackbars" border="0" alt="trackbars" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/trackbars.gif" width="442" height="325" /></p>
<p>In the screenshot above, you can see that I’ve augmented the Trackbar with by putting a couple of label controls just below it: <strong>Lame</strong>, <strong>Decent</strong>, and <strong>Hardcore</strong>.</p>
<p>Here’s another iteration of <code>InitializeCocktailControls()</code>, with code to initialize the Trackbar with the following properties:</p>
<ul>
<li>The leftmost position on the Trackbar corresponds to the value 0 </li>
<li>The rightmost position on the Trackbar corresponds to the value 10 </li>
<li>The smallest step you can make in either direction, up or down, is 1 </li>
<li>Large steps, which you get by clicking to the right or left of the current slider position, change the value in steps of 5 </li>
<li>The initial value of the Trackbar is 5 </li>
</ul>
<p><code></p>
<pre>public void InitializeCocktailControls()
{
    cboCocktail.DropDownStyle = ComboBoxStyle.d;
    cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
    cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
    cboCocktail.Items.Add(&quot;Martini&quot;);
    cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
    cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
    cboCocktail.SelectedIndex = 0;

    nudCocktail.Minimum = 1;
    nudCocktail.Maximum = 10;
    nudCocktail.Increment = 1;
    nudCocktail.Value = 1;

    tbrCocktail.Minimum = 0;
    tbrCocktail.Maximum = 10;
    tbrCocktail.SmallChange = 1;
    tbrCocktail.LargeChange = 5;
    tbrCocktail.Value = 5;
}</pre>
<p></code></p>
<p>Here’s <code>OrderBooze()</code>, with an additional line to display the user’s preferred drink strength, which is derived from the Trackbar’s <code>Value</code> property:</p>
<p><code></p>
<pre>private void OrderBooze()
{
    StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                            cboCocktail.SelectedItem.ToString() +
                            &quot;\n&quot;);
    order.AppendLine(&quot;Quantity: &quot; + nudCocktail.Value.ToString());
    order.AppendLine(&quot;Strength: &quot; + tbrCocktail.Value.ToString());

    MessageBox.Show(order.ToString());
}</pre>
<p></code></p>
<h3>Putting It All Together</h3>
<p>Here’s the complete code behind the single form in <em>Beef ‘N’ Booze:</em></p>
<p><code></p>
<pre>using System;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;

namespace BeefNBooze
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
            InitializeCocktailControls();
        }

        public void InitializeCocktailControls()
        {
            cboCocktail.DropDownStyle = ComboBoxStyle.DropDownList;
            cboCocktail.Items.Add(&quot;Bloody Caesar&quot;);
            cboCocktail.Items.Add(&quot;Bloody Mary&quot;);
            cboCocktail.Items.Add(&quot;Martini&quot;);
            cboCocktail.Items.Add(&quot;Rye and Ginger&quot;);
            cboCocktail.Items.Add(&quot;Vodka Tonic&quot;);
            cboCocktail.SelectedIndex = 0;

            nudCocktail.Minimum = 1;
            nudCocktail.Maximum = 10;
            nudCocktail.Increment = 1;
            nudCocktail.Value = 1;

            tbrCocktail.Minimum = 0;
            tbrCocktail.Maximum = 10;
            tbrCocktail.SmallChange = 1;
            tbrCocktail.LargeChange = 5;
            tbrCocktail.Value = 5;
        }

        private void btnBeef_Click(object sender, EventArgs e)
        {
            OrderBeef();
        }

        private void btnBooze_Click(object sender, EventArgs e)
        {
            OrderBooze();
        }

        private void OrderBeef()
        {
            StringBuilder order = new StringBuilder(&quot;Steak: &quot;);
            int numSides = 0;

            if (rdoRare.Checked)
            {
                order.AppendLine(&quot;Rare&quot;);
            }
            else if (rdoMediumRare.Checked)
            {
                order.AppendLine(&quot;Medium Rare&quot;);
            }
            else if (rdoMedium.Checked)
            {
                order.AppendLine(&quot;Medium&quot;);
            }
            else if (rdoMediumWell.Checked)
            {
                order.AppendLine(&quot;Medium Well&quot;);
            }
            else if (rdoWellDone.Checked)
            {
                order.AppendLine(&quot;Well Done&quot;);
            }
            else
            {
                order.AppendLine(&quot;Chef's choice&quot;);
            }

            order.AppendLine(&quot;Sides:&quot;);

            if (chkCreamedSpinach.Checked)
            {
                order.AppendLine(&quot;Creamed Spinach&quot;);
                ++numSides;
            }

            if (chkFrites.Checked)
            {
                order.AppendLine(&quot;Frites&quot;);
                ++numSides;
            }

            if (chkMushrooms.Checked)
            {
                order.AppendLine(&quot;Mushrooms&quot;);
                ++numSides;
            }

            if (numSides == 0)
            {
                order.AppendLine(&quot;None&quot;);
            }

            MessageBox.Show(order.ToString());
        }

        private void OrderBooze()
        {
            StringBuilder order = new StringBuilder(&quot;Cocktail: &quot; +
                                    cboCocktail.SelectedItem.ToString() +
                                    &quot;\n&quot;);
            order.AppendLine(&quot;Quantity: &quot; + nudCocktail.Value.ToString());
            order.AppendLine(&quot;Strength: &quot; + tbrCocktail.Value.ToString());

            MessageBox.Show(order.ToString());
        }

    }
}</pre>
<p></code></p>
<h3>Download, Go Forth and Noodle!</h3>
<p>It’s one thing to read about Windows Mobile 6’s built-in user interface controls, but something else entirely to make use of them. If you’re feeling ambitious, start a new project and rebuild <em>Beef ‘N’ Booze </em>(or a similar app that lets you explore the controls) yourself. Or, if you’d like, download my project files by clicking the link below, play with the app, make changes and learn. No matter which route you take, the best way to learn to is fire up Visual Studio and get coding!</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beefnbooze.zip"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Download icon" border="0" alt="Download icon" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/download.gif" width="35" height="36" /></a> <strong><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/05/beefnbooze.zip">Download the <em>Beef ‘N’ Booze</em> project (Visual Studio 2008 SP1, 15K .zip file)</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/05/01/upwardly-mobile-part-3-exploring-windows-mobile-6s-built-in-ui-controls/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Microsoft Canada and OCAD Announce a Surface Team-Up (or: OCAD Gets a Big-Ass Table)</title>
		<link>http://www.globalnerdy.com/2009/04/08/microsoft-canada-and-ocad-announce-a-surface-team-up-or-ocad-gets-a-big-ass-table/</link>
		<comments>http://www.globalnerdy.com/2009/04/08/microsoft-canada-and-ocad-announce-a-surface-team-up-or-ocad-gets-a-big-ass-table/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 18:34:36 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Toronto]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[Big-Ass Table]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Left Brain Meets Right Brain]]></category>
		<category><![CDATA[Mesh]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[OCAD]]></category>
		<category><![CDATA[Surface]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/04/08/microsoft-canada-and-ocad-announce-a-surface-team-up-or-ocad-gets-a-big-ass-table/</guid>
		<description><![CDATA[
This morning at the Mesh 2009 Conference, Microsoft’s Mark Relph (my boss’ boss) and OCAD President Sara Diamond announced a Microsoft/OCAD partnership. Microsoft will provide OCAD with a Surface tabletop computer along with software and support (which includes training and courses by Infusion Development, who know a lot about developing software for the Surface).

We’re providing [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Sara Diamond and Mark Relph onstage at the Mesh Conference 2009" border="0" alt="Sara Diamond and Mark Relph onstage at the Mesh Conference 2009" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/sara-diamond-mark-relph.jpg" width="600" height="450" /></p>
<p>This morning at the <strong><a href="http://meshconference.com/">Mesh 2009 Conference</a></strong>, Microsoft’s <strong>Mark Relph</strong> (my boss’ boss) and <strong><a href="http://www.ocad.ca/">OCAD</a></strong> President <strong><a href="http://www.ocad.ca/about_ocad/administration/presidents_office/presidents_message.htm">Sara Diamond</a></strong> announced a Microsoft/OCAD partnership. Microsoft will provide OCAD with a <a href="http://www.microsoft.com/surface/">Surface</a> tabletop computer along with software and support (which includes training and courses by <a href="http://www.infusion.com/">Infusion Development</a>, who know a lot about developing software for the Surface).</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="sara_mark_surface_02" border="0" alt="sara_mark_surface_02" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/sara-mark-surface-02-thumb.jpg" width="600" height="450" /></p>
<p>We’re providing OCAD with a Surface development unit along with Visual Studio and other developer tools related to building software for it. The Surface will be put in OCAD’s Digital Media Research + Innovation Institute, whose first phase is currently under construction. It’ll be used as a tool within the school’s -disciplinary Digital Futures Initiative (DFI) program, whose goals include establishing a research and innovation laboratory for interactive design, art and digital media. </p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Sara Diamond, Mark Relph and the Mesh 2009 audience" border="0" alt="Sara Diamond, Mark Relph and the Mesh 2009 audience" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/ocad-surface-announcement-1.jpg" width="600" height="450" /> </p>
<p><a href="http://blogs.msdn.com/cdndevs/archive/2009/04/08/microsoft-canada-ocad-igniting-the-next-generation-of-software-design-user-experience.aspx">Mark Relph writes:</a></p>
<blockquote><p>Microsoft Surface will help OCAD students, faculty and researchers to apply interactive technology to their work in digital media, art and design.&#160; In conjunction with our partner Infusion Development, we will be directly engaged with teaching students how to harness the power of these new technologies.&#160; This is only the start &#8211; in the years ahead we’ll be bringing in our technology and design experts to OCAD to help further strengthen this relationship. Our focus will not just be on the Surface technologies &#8211; as we move into a world where the interaction with software will depend on new user experiences like touch, speech and other capabilities it is critical that we prepare the next generation of software designers and experience experts.</p>
</blockquote>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="sara_mark_surface_01" border="0" alt="sara_mark_surface_01" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/04/sara-mark-surface-01.jpg" width="600" height="450" /> </p>
<p>As programmers, engineers and techies, we at Microsoft can come up with all sorts of interesting uses and applications for Surface, but we can’t come up with <em>all </em>of them. We feel that the students at OCAD, who have a strong bent towards design, will come up with some interesting ideas and applications that would never occur to us whose bent is towards geekery. Having worked at <a href="http://craphound.com/nonfic/mackerel.html">a job where OCAD graduates were the majority</a>, I can say from experience that there’s a certain “something” that you get from design-oriented minds that you don’t get from engineering-oriented minds. You can see that “something” in Apple’s products, and it’s something I’d like to see more of from The Empire.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/04/08/microsoft-canada-and-ocad-announce-a-surface-team-up-or-ocad-gets-a-big-ass-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Thoughts on Interface Design</title>
		<link>http://www.globalnerdy.com/2009/01/13/some-thoughts-on-interface-design/</link>
		<comments>http://www.globalnerdy.com/2009/01/13/some-thoughts-on-interface-design/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 17:18:52 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[decimal precision]]></category>
		<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=2628</guid>
		<description><![CDATA[This article was originally published in Canadian Developer Connection.
Comments on “The Device/Desktop” Opportunity
 
The Device/Desktop Opportunity got a number of comments, both in the “Comments” section&#160;and sent directly to me via email. First, I’d like to say “please keep those comments coming!” One of my intentions was to start some discussion.
I got a number of [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/01/13/some-thoughts-on-interface-design.aspx">This article was originally published in <em>Canadian Developer Connection</em>.</a></p>
<h3>Comments on “The Device/Desktop” Opportunity</h3>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-photo-album1.jpg" /> </p>
<p><strong><em><a href="http://blogs.msdn.com/cdndevs/archive/2009/01/09/the-device-desktop-opportunity.aspx">The Device/Desktop Opportunity</a></em></strong> got a number of comments, both in <a href="http://www.globalnerdy.com/2009/01/09/the-devicedesktop-opportunity/#comments">the “Comments” section</a><em>&#160;</em>and sent directly to me via email. First, I’d like to say “please keep those comments coming!” One of my intentions was to start some discussion.</p>
<p>I got a number of comments whose essence was <strong>“Why don’t the users simply use a photo editing tool and bring their photos down to the right size and DPI themselves, then copy them to the device?”</strong> To a geek, this suggestion sounds very sensible; in fact, I did just that to confirm what I thought the application that came with the device did.</p>
<p>The problem is that most users don’t see it that way. <a href="http://www.globalnerdy.com/2009/01/09/the-devicedesktop-opportunity/#comment-2937">A commenter named Joshua summed it up nicely when he wrote</a>:</p>
<blockquote><p><em>I think we geeks, being somewhat more familiar with the tools than the problems, find it relatively easy to tweak an existing tool to do the job, than to “suffer” with Yet Another Not-Quite-Adequate Problem-X-Solving Tool.</em></p>
</blockquote>
<p>Conversely, non-geek users don’t want to have to be bothered with all that hoo-hah. They see the task as moving the pictures from their camera or computer to the device. Do they <em>really </em>have to learn about some other program and fiddle with their photos to do just that? Weren’t computers supposed to make their lives easier?</p>
<p>This isn’t laziness or pride in ignorance on the part of non-geeks. <strong>It’s just that they have different interests and priorities than we developers do.</strong> To put yourself in their shoes, think of how most of us would make spaghetti: probably with store-bought dried pasta, canned sauce and pre-grated cheese. Now imaging how chef <a href="http://en.wikipedia.org/wiki/Gordon_Ramsay">Gordon Ramsay</a> would scream at you in a stream of put-downs and curse words for doing so. In his mind, he’s justified; in your mind, he’s being an elitist jerk who just doesn’t get the fact that you just want some spaghetti.</p>
<p>In the same comment, Joshua also talked about an interesting idea: <strong>putting the necessary desktop/device interface software right on the device</strong>. He wrote that the <a href="http://www.theflip.com/products_flip_mino.shtml#scene=sceneMain">Flip Mino camcorder</a> (which looks like a pretty fun device; Toronto-based photoblogger <a href="http://www.rannieturingan.com/"><strong>Rannie “<em>Photojunkie</em>” Turingan</strong></a> seems to be getting a lot of mileage out of it) comes with the necessary software for Windows and Mac stored within it.</p>
<h3>Should “Cheap” Sites Look Cheap?</h3>
<p>Last week, while having a late-night post-party snack with a couple of Toronto-based tech entrepreneurs &#8212; <em><a href="http://oreilly.com/catalog/9780596518172/">Facebook Cookbook</a> </em>author <strong><a href="http://jaygoldman.com/">Jay Goldman</a></strong> and <em><a href="http://commandn.tv/">CommandN</a></em> co-host <strong><a href="http://willpate.com/">Will Pate</a> – </strong>we got to talking about sites that were successful in spite of their “pretty crappy” visual design. The site that got the discussion rolling was the dating site and Canadian ASP.NET success story <strong><em><a href="http://www.plentyoffish.com/">Plenty of Fish</a> </em></strong>(for a good general intro, <a href="http://www.nytimes.com/2008/01/13/business/13digi.html">see this <em>New York Times</em> article</a>). From there, a number of examples came up, including <em><a href="http://craigslist.org/">Craigslist</a></em> and a popular IIS-based site that lets you search for and book cheap airfare and travel packages. These sites all do their jobs quite well, but if you showed them to a web designer, you’d see a conniption fit within seconds.</p>
<p>“Travel sites all search the same data,” said Jay, “and many of them are running on the same back-end. They just use different design templates. Maybe people think that [the cheap-looking but successful travel site] gives you cheaper deals because they <em>look</em> cheap.”</p>
<p>He may have a point. Part of <em>Craiglist’s</em> charm is its stripped-down, not-even-trying-to-look-good design. Does that design send users the same subtle message in the same way that the no-frills “anti-design” of “big box” discount stores sends to their customers? It may be something to think about if you’re building a customer-facing site for a business whose main selling point is low prices or saving its customers money.</p>
<h3>The New Look for <em>Calculator</em> in Windows 7</h3>
<p>In the <em><a href="http://codinghorror.com/">Coding Horror</a> </em>article <strong><em><a href="http://www.codinghorror.com/blog/archives/001208.html">If You Don’t Change the UI, Nobody Notices</a></em></strong>, Jeff Atwood makes an interesting point: if you want users to notice changes you’ve made to the functionality or back end of an application, they should be mirrored by appropriate corresponding changes to the front end or user interface. Along the way, he points to <a href="http://blogs.msdn.com/oldnewthing/archive/2004/05/25/141253.aspx">a Raymond Chen article</a> I’d never seen before. As much as I view Raymond with the highest esteem – he’s probably <em>forgotten</em> more about coding that I’ll ever <em>learn</em> &#8212; at a certain point in his article, I did a <a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/picard_facepalm.jpg">facepalm</a>. Can you guess when that point was?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/01/13/some-thoughts-on-interface-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Device/Desktop Opportunity</title>
		<link>http://www.globalnerdy.com/2009/01/09/the-devicedesktop-opportunity/</link>
		<comments>http://www.globalnerdy.com/2009/01/09/the-devicedesktop-opportunity/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 17:02:26 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[opportunities]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/?p=2614</guid>
		<description><![CDATA[This article originally appeared in Canadian Developer Connection.
 
Why isn’t Brookstone in Canada yet?
For those of you who aren’t familiar with Brookstone, a good way to describe it is “lifestyle gadget store”. A good portion of their catalog is devoted to “lifestyle electronics”: things like 

alarm clocks for travel that also play soothing noises to [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/01/09/the-device-desktop-opportunity.aspx">This article originally appeared in <em>Canadian Developer Connection</em>.</a><em></em></p>
<p><a href="http://www.brookstone.com/store/product.asp?product_code=588269&amp;search_type=search&amp;search_words=photo%20album&amp;prodtemp=t1&amp;cm_re=Result*R1C1*T"><img style="border-right-width: 0px; margin: 0px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="brookstone_my_life_photo_album" border="0" alt="brookstone_my_life_photo_album" align="right" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-photo-album1.jpg" width="244" height="244" /></a> </p>
<p>Why isn’t <strong><a href="http://brookstone.com">Brookstone</a></strong> in Canada yet?</p>
<p>For those of you who aren’t familiar with Brookstone, a good way to describe it is “lifestyle gadget store”. A good portion of their catalog is devoted to “lifestyle electronics”: things like </p>
<ul>
<li><a href="http://www.brookstone.com/store/product.asp?product_code=590877&amp;wid=19&amp;cid=1904&amp;sid=190401&amp;search_type=subcategory&amp;prodtemp=t1">alarm clocks for travel that also play soothing noises to help you sleep</a>, </li>
<li><a href="http://www.brookstone.com/store/product.asp?product_code=wireless_key_finders&amp;wid=19&amp;cid=1901&amp;sid=190106&amp;search_type=subcategory&amp;prodtemp=t2">key fobs that emit a sound so all you have to do is press a button to find them</a>, </li>
<li><a href="http://www.brookstone.com/store/product.asp?product_code=568279&amp;wid=11&amp;cid=1101&amp;sid=110108&amp;search_type=subcategory&amp;prodtemp=t2">record players with USB output so you can digitize your vinyl album collection</a>, </li>
</ul>
<p>and an assortment of digital photo albums like the <a href="http://www.brookstone.com/store/product.asp?product_code=588269&amp;search_type=search&amp;search_words=photo%20album&amp;prodtemp=t1&amp;cm_re=Result*R1C1*T">“My Life” digital photo album</a> pictured here. It holds up to 4000 photos and sports a 3.5 inch screen with 320 by 240 pixel resolution and will fit into a purse or jacket pocket. Sure, you can show off photos using your mobile phone, PDA, netbook or laptop, but there’s a considerable market for simple, single-use devices like this.</p>
<p>Brookstone is a great store, and whenever I’m in the U.S. and in a mall or Logan Airport, I can’t resist taking a peek inside.</p>
<p>My mom is also a big fan of Brookstone stuff, so when I was down in the U.S. for American Thanksgiving, I made it a point to get her something from them for Christmas. She loves carrying printouts of photos of the grandkids, so I got her a “My Life” digital photo album. I figured I’d pre-load it with family photos before wrapping it up.</p>
<p>I told my mother-in-law about my purchase and she said “I have one of those. They’re really nice, but I can’t figure out how to use the software.”</p>
<p>So, being the good son-in-law that I am, I decided to take a look at the software, which is called <strong><em>Photo Resizer</em></strong>. It worked just fine; the problem is that its interface could use some tweaking.</p>
<p>Here’s the first thing you see when you run the program:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-software-1.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Screenshot of Brookstone &quot;My Life&quot; photo frame software" border="0" alt="Screenshot of Brookstone &quot;My Life&quot; photo frame software" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-software-1-thumb.gif" width="604" height="566" /></a>&#160;</p>
<p>I’m no psychic, but I can say with near-100% certainty that you probably don’t store photos in your <strong>Windows/system32</strong> directory. So I used the rather old-school directory navigator to get to my <strong>Pictures</strong> directory and then to where I’d stored my photos from PDC 2008:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-software-21.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Screenshot of Brookstone &quot;My Life&quot; photo frame software" border="0" alt="Screenshot of Brookstone &quot;My Life&quot; photo frame software" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-software-2-thumb1.gif" width="604" height="566" /></a> </p>
<p>From there, you check the boxes corresponding the photos you want to transfer.</p>
<p>Once you’ve done that, it’s time to select which album you want to move the photos to. The digital album contains 4 internal albums, so you can group your photos by criteria – perhaps album 1 will hold your vacation photos, album 2 will have family photos, and so on. There’s a physical button for each album, so switching between albums is pretty quick.</p>
<p>You select the album you want to move the photos to by clicking the <strong>Browse </strong>button (it’s in the <strong>Save Photos</strong> panel), which makes a modal directory selector window appear:</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-software-31.gif"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Screenshot of Brookstone &quot;My Life&quot; photo frame software" border="0" alt="Screenshot of Brookstone &quot;My Life&quot; photo frame software" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/01/brookstone-my-life-software-3-thumb1.gif" width="604" height="466" /></a> </p>
<p>…at which point you’d select the directory corresponding to album you want to move your photos to. Fortunately for the user, the default directory in this directory selector is <strong>ALBUM1</strong> in the volume named <strong>PHOTOALBUM</strong> rather than <strong>Windows/system32</strong>. I suppose if I really wanted to, I could use the app for more than just transferring photos to the album, but as a quick utility for downsizing photos to 320 by 240 and saving them in the directory of my choice.</p>
<p>Once that’s done, one step remains: clicking the <strong>Resize</strong> button, which is the one button in the entire interface that <em>doesn’t</em> look like a button.</p>
<p>If you’re a reader of this blog, you probably could take a look at the interface and immediately understand what the program does and know what to do to get the photos on your your drives and camera cards into your photo album. But I’m willing to bet that many people in the target market for the photo album would find <em>Photo Resizer’s</em> user interface confounding. My mother-in-law did, and she’s probably not the only one.</p>
<p>Now don’t get me wrong – I actually <em>like</em> the Brookstone “My Life” digital photo album. The device itself is easy to use, and I know a lot of people who’d love one of these, and I’m sure you do too. <strong>I just think that there’s an opportunity for developers of Windows desktop apps here, and probably with a lot of consumer goods that hook up to people’s PCs. </strong></p>
<p>What would it take to build a user-friendlier version of <em>Photo Resizer</em>? </p>
<p>Fortunately, we’re in the USB age, which means that as far as your computer is concerned, many USB devices “look” just like hard drives. Such is the case with the “My Life” photo album, which looks like a drive with the volume name <strong>PHOTOALBUM</strong> containing four directories, <strong>ALBUM1</strong> through <strong>ALBUM4</strong>. Reduced to its essence, <em>Photo Resizer </em>simply does the following:</p>
<ul>
<li>It asks the user to specify a set of photos </li>
<li>For each photo in the set, it creates a version reduced to 320 by 240 pixels at 96 dpi </li>
<li>It saves each of those reduced photos in a specified directory </li>
</ul>
<p>On one level, it’s a reasonable hobby project. User interface and user experience gurus could have a field day dreaming up a revised user interface, and developers could use this as an opportunity to try developing an app using <a href="http://windowsclient.net/">WPF</a>.</p>
<p><strong>On another level, it’s an opportunity.</strong> How many times have you used a very nice device that came with software for your computer that seemed like an afterthought? I can think of a number of devices that I own or have owned that fall into that category. Perhaps there’s a market for improved applications with beautiful, intuitive user interfaces for devices like the “My Life” photo album. Maybe they could be sold online for some small fee – I’m think 5 or 10 dollars. <strong>It could be a nice side business for a developer;</strong> at the very least, it’s another “feather in your cap” for your resume.</p>
<p>I told my mother-in-law that I’d write an easier-to-use app that she could use to transfer photos to her album. While I’m at it, I’ll post some articles covering what I did and maybe solicit your input. Once it’s done, I’ll post both the app and its code online for you to peruse.</p>
<p>Here’s the challenge for you: can you think of any opportunities to write improved applications for devices that hook up to computers? Can you write a better app for the “My Life” digital photo frame?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/01/09/the-devicedesktop-opportunity/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Enabling and Disabling the Mouse Wheel &#8220;Zoom&#8221; Feature on Map APIs</title>
		<link>http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/</link>
		<comments>http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 16:43:13 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[mousewheel]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[Virtual Earth]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Yahoo Maps]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/</guid>
		<description><![CDATA[ 
The major map APIs provide a “zoom” feature that lets you zoom the map in or out if you position the cursor over the map and use your mouse’s scroll wheel. Sometimes you want this function enabled, sometimes you don’t. David Janes, over at his Code Blog provides the JavaScript code for:

Enabling and disabling [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://code.davidjanes.com/blog/2008/11/14/how-to-enabledisable-mouse-wheel-actions-on-your-map/"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Microsoft Laser Mouse 7000 superimposed over a Live map of Toronto" border="0" alt="Microsoft Laser Mouse 7000 superimposed over a Live map of Toronto" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2008/11/mouse-and-toronto-map.jpg" width="450" height="419" /></a> </p>
<p>The major map APIs provide a “zoom” feature that lets you zoom the map in or out if you position the cursor over the map and use your mouse’s scroll wheel. Sometimes you want this function enabled, sometimes you don’t. David Janes, over at his Code Blog <a href="http://code.davidjanes.com/blog/2008/11/14/how-to-enabledisable-mouse-wheel-actions-on-your-map/">provides the JavaScript code for</a>:</p>
<ul>
<li>Enabling and disabling the mouse wheel zoom for Google Maps and Microsoft Virtual Earth</li>
<li>Disabling the mouse wheel zoom for Yahoo! Maps (it’s enabled by default, but there doesn’t seem to be a way to re-enable it once disabled.)</li>
</ul>
<h3>Links</h3>
<ul>
<li><em>David Janes’ Code Blog</em>: <a href="http://code.davidjanes.com/blog/2008/11/14/how-to-enabledisable-mouse-wheel-actions-on-your-map/"><strong><em>How to enable/disable Mouse Wheel actions on your map</em></strong></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/11/22/enabling-and-disabling-the-mouse-wheel-zoom-feature-on-map-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Don&#8217;t Browsers Have File Upload Progress Bars?</title>
		<link>http://www.globalnerdy.com/2008/06/26/why-dont-browsers-have-file-upload-progress-bars/</link>
		<comments>http://www.globalnerdy.com/2008/06/26/why-dont-browsers-have-file-upload-progress-bars/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 13:39:34 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Software and Services]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://globalnerdy.com/?p=1785</guid>
		<description><![CDATA[Michael Kimsal asks a very good question: Why do browsers still not have file upload progress bars?
]]></description>
			<content:encoded><![CDATA[<p></p><p>Michael Kimsal asks a very good question: <a href="http://michaelkimsal.com/blog/why-do-browsers-still-not-have-file-upload-progress-meters/"><strong>Why do browsers <em>still</em> not have file upload progress bars?</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/06/26/why-dont-browsers-have-file-upload-progress-bars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All HTML Form Control Elements Require Labels</title>
		<link>http://www.globalnerdy.com/2008/06/06/all-html-form-control-elements-require-labels/</link>
		<comments>http://www.globalnerdy.com/2008/06/06/all-html-form-control-elements-require-labels/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 15:22:14 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://globalnerdy.com/?p=1696</guid>
		<description><![CDATA[UX Rule #1 &#8211; All HTML Form Control Elements Require Labels, and this rule is illustrated by showing the differences between Facebook&#8217;s and GMail&#8217;s login forms.
]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://forfraksake.com/post/37333657/all-html-form-control-elements-require-labels"><strong><cite>UX Rule #1 &#8211; All HTML Form Control Elements Require Labels</cite>,</strong></a> and this rule is illustrated by showing the differences between Facebook&#8217;s and GMail&#8217;s login forms.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/06/06/all-html-form-control-elements-require-labels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real Threat to Google</title>
		<link>http://www.globalnerdy.com/2008/04/28/the-real-threat-to-google/</link>
		<comments>http://www.globalnerdy.com/2008/04/28/the-real-threat-to-google/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 20:13:21 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Hardware and Gadgets]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[cell phones]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://globalnerdy.com/?p=1630</guid>
		<description><![CDATA[According to a BusinessWeek article, the real threat to Google isn&#8217;t Microsoft or Yahoo!, but cell phones:. &#8220;As more people use cell phones and their tiny glass screens to gain access to the Internet, Google and its fellow online advertisers will have less space, or what&#8217;s called ad inventory, to place marketing messages for customers. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>According to a <cite>BusinessWeek</cite> article, <a href="http://www.businessweek.com/technology/content/apr2008/tc20080427_580014.htm"><strong>the real threat to Google isn&#8217;t Microsoft or Yahoo!, but cell phones:</strong></a>. &#8220;As more people use cell phones and their tiny glass screens to gain access to the Internet, Google and its fellow online advertisers will have less space, or what&#8217;s called ad inventory, to place marketing messages for customers. Google makes money selling ad inventory. And its ad inventory is diminished on a cell phone.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/04/28/the-real-threat-to-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assassin&#8217;s Creed, I Wish I Could Quit You</title>
		<link>http://www.globalnerdy.com/2008/04/28/assassins-creed-i-wish-i-could-quit-you/</link>
		<comments>http://www.globalnerdy.com/2008/04/28/assassins-creed-i-wish-i-could-quit-you/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 05:00:32 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Play]]></category>
		<category><![CDATA[annoyances]]></category>
		<category><![CDATA[Assassin's Creed]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://globalnerdy.com/?p=1618</guid>
		<description><![CDATA[<p>I've played <a href="http://en.wikipedia.org/wiki/Assassin%27s_Creed"><cite>Assassin's Creed</cite></a> only on XBox 360 and I don't recall the procedure to quit the game being as byzantine as it is on the PC version, shown below:</p>

<p style="text-align:center;"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/gwOvuY0UbFM&#038;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/gwOvuY0UbFM&#038;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve played <a href="http://en.wikipedia.org/wiki/Assassin%27s_Creed"><cite>Assassin&#8217;s Creed</cite></a> only on XBox 360 and I don&#8217;t recall the procedure to quit the game being as byzantine as it is on the PC version, shown below:</p>
<p style="text-align:center;"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/gwOvuY0UbFM&#038;hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/gwOvuY0UbFM&#038;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2008/04/28/assassins-creed-i-wish-i-could-quit-you/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
