<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Christopher Bennage : UX</title><link>http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx</link><description>Tags: UX</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Things I’d Like To Present</title><link>http://devlicio.us/blogs/christopher_bennage/archive/2010/01/08/things-i-d-like-to-present.aspx</link><pubDate>Fri, 08 Jan 2010 11:32:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:54940</guid><dc:creator>Christopher Bennage</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In case you are not familiar with &lt;a href="http://visitmix.com/" target="_blank"&gt;MIX&lt;/a&gt;, it is a conference from Microsoft focusing on the collaboration of design and development. Admittedly, the sessions tend to favor the developer, but there is always excellent design and UX content.&lt;/p&gt;  &lt;p&gt;&lt;a title="voting for MIX sessions" href="http://visitmix.com/opencallvote/?query=Christopher%20Bennage" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Mix10_Vote_grn_240" border="0" alt="Mix10_Vote_grn_240" align="right" src="http://devlicious.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/christopher_5F00_bennage/Mix10_5F00_Vote_5F00_grn_5F00_240_5F00_44742D31.jpg" width="184" height="244" /&gt;&lt;/a&gt; There was an open call for presentations this year and the community gets to choose which of the proposals will be selected. There are a number of &lt;a href="http://visitmix.com/opencallvote/" target="_blank"&gt;excellent proposals&lt;/a&gt; and I encourage you to go check out the list and vote for the sessions that you are genuinely interested in. (Even if you won’t be attending, the sessions will be broadcast.)&lt;/p&gt;  &lt;p&gt;Here are some sessions that I proposed for MIX10:&lt;/p&gt;  &lt;h3&gt;Cross Compiling Games for Silverlight &amp;amp; XNA&lt;/h3&gt;  &lt;p&gt;Our friend and Silverlight MVP, &lt;a href="http://blogs.silverarcade.com/silverlight-games-101/" target="_blank"&gt;Bill Reiss&lt;/a&gt;, has created an incredible library that enables you to cross compile XNA games for Silverlight. The library is called &lt;a title="a library for cross compiling XNA and Silverlight games" href="http://silversprite.codeplex.com/" target="_blank"&gt;SilverSprite&lt;/a&gt; and we feature it on Silver Arcade. (Wow, that’s a lot of ‘silvers’ in one paragraph.)&lt;/p&gt;  &lt;p&gt;In this session, we’d write a simple game for XNA (discussing some of the basic of game dev along the way) and then port the game over to Silverlight.&lt;/p&gt;  &lt;p&gt;This is an area where I wish I could spend more time. I love game development, but it’s always taking a back burner to other projects.   &lt;br /&gt;&lt;a title="Cross Compiling Games for Silverlight &amp;amp; XNA" href="http://visitmix.com/opencallvote/Entry?entryId=CROSSC046" target="_blank"&gt;[vote for this]&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;LinqToSQL and EntityFramework Profilers: Case Study&lt;/h3&gt;  &lt;p&gt;If you aren’t already familiar with the UberProf suite of ORM profilers, you can read tales of the development on &lt;a href="http://ayende.com/Blog/category/561.aspx" target="_blank"&gt;Ayende’s blog&lt;/a&gt;. Rob and I built the UI side of the application, and we learned a lot in the process. I’d like to do a talk were we discuss the challenges of the project, how we solved them, and what we did wrong. &lt;/p&gt;  &lt;p&gt;Yes, NHProf will be included too. (I submitted a case study for it last year, and it didn’t get picked. I have to sneak it in).&amp;#160; &lt;/p&gt;  &lt;p&gt;A few interesting aspects: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;we built this using MVVM, but well before &lt;a href="http://www.codeplex.com/caliburn" target="_blank"&gt;Caliburn&lt;/a&gt; reached maturity. &lt;/li&gt;    &lt;li&gt;the four separate apps (NHProf, EFProf, L2SProf, HProf) all use a single code base.&lt;/li&gt;    &lt;li&gt;we’re about to port the project from WPF to Silverlight.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a title="LinqToSQL and EntityFramework Profilers: Case Study" href="http://visitmix.com/opencallvote/Entry?entryId=LINQTO047" target="_blank"&gt;[vote for this]&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Silver Arcade: Case Study&lt;/h3&gt;  &lt;p&gt;This is a presentation that Rob and I have made a couple of times. Most recently at the Orlando .NET Users Group. We walk through the actual code for &lt;a href="http://www.silverarcade.com" target="_blank"&gt;Silver Arcade&lt;/a&gt; explaining the philosophy, design choices and mistakes we made along the way.&lt;/p&gt;  &lt;p&gt;For MIX, we would focus more design and UX choices, such as the separation of the behaviors from the views. However, we like to have a lot of audience interaction and tend to follow where ever the questions led (especially those leading questions that &lt;a href="http://scottdensmore.typepad.com/" target="_blank"&gt;Scott Densmore&lt;/a&gt; tends to ask). &lt;/p&gt;  &lt;p&gt;Silver Arcade is also interesting because&amp;#160; we deliberately used a number of newer hipper technologies; including Azure, ASP.NET MVC, jQuery, MEF, NHibernate and so on.   &lt;br /&gt; &lt;a title="case study of Silver Arcade" href="http://visitmix.com/opencallvote/Entry?entryId=SILVER048" target="_blank"&gt;[vote for this]&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=54940" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/WPF/default.aspx">WPF</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Game+Development/default.aspx">Game Development</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/fun/default.aspx">fun</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/XNA/default.aspx">XNA</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Software+Architecture/default.aspx">Software Architecture</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/web/default.aspx">web</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/MVC/default.aspx">MVC</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Presentations/default.aspx">Presentations</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI/default.aspx">UI</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI+Patterns/default.aspx">UI Patterns</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/XAML/default.aspx">XAML</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx">UX</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Caliburn/default.aspx">Caliburn</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/viewmodel/default.aspx">viewmodel</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/mvvm/default.aspx">mvvm</category></item><item><title>Are Value Converters Evil?</title><link>http://devlicio.us/blogs/christopher_bennage/archive/2009/10/01/are-value-converters-evil.aspx</link><pubDate>Thu, 01 Oct 2009 05:17:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:51934</guid><dc:creator>Christopher Bennage</dc:creator><slash:comments>7</slash:comments><description>&lt;p&gt;&lt;a href="http://blogs.silverlight.net/blogs/justinangel/"&gt;Justin Angel&lt;/a&gt; (who is undoubtedly a Silverlight Rock Star) decided to stir things up a bit on Twitter the other night.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;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="Worst practices in WPF/Silverlight: Value Converters, MultiBindings, Triggers, Markup Extensions, Element to Element binding. Talk." border="0" alt="Worst practices in WPF/Silverlight: Value Converters, MultiBindings, Triggers, Markup Extensions, Element to Element binding. Talk." src="http://devlicious.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/christopher_5F00_bennage/image_5F00_682188A6.png" width="454" height="280" /&gt;&lt;/p&gt;  &lt;p&gt;I was compelled to echo &lt;a href="http://twitter.com/wardbell/status/4489534009"&gt;Ward Bell’s response&lt;/a&gt; that value converters can play legitimate role in the UI. Justin asked me to defend my position; a reasonable request. Now, I know that I am in the minority for maintaining this position. Many heavy hitters in the WPF community think &lt;a href="http://groups.google.com/group/wpf-disciples/browse_thread/thread/3fe270cd107f184f"&gt;MVVM does away with value converters&lt;/a&gt;. (I am not going to talk about the other bits here, just value converters.)&lt;/p&gt;  &lt;h3 style="direction:rtl;"&gt;בְּרֵאשִׁית&lt;/h3&gt;  &lt;p&gt;One of the early WPF examples that got my attention was &lt;a title="I don&amp;#39;t think this is the original example" href="http://richapps.wordpress.com/2009/02/12/advanced-styling-wpf/"&gt;a listbox that was styled to look like a map of the United States&lt;/a&gt;. What impressed me in this sample was the &lt;em&gt;separation of Behavior from Feel&lt;/em&gt;. I’m using the word “feel” with a very specific meaning. We often talk about Look and Feel. I think Look is shallow and Feel is deep. You can change the look of a listbox by changing the colors, the borders, the thickness of the lines, the icon that activates the dropdown, and so on. However, even by changing all of those, it stills &lt;em&gt;feels&lt;/em&gt; like a listbox. Now, once you’ve made that “listbox” into a map of a country you’ve done something deeper. You’ve changed the Feel. Pretty significantly too, I’d say.&lt;/p&gt;  &lt;p&gt;But even with the radical feeling map-listbox, one thing you haven’t changed is the Behavior. The semantics of a listbox are still in effect. Show a list of items and allow one to be selected.&lt;/p&gt;  &lt;p&gt;But alas, those primeval glories of WPF were drowned out in the drones of “where’s my datagrid?”.&lt;/p&gt;  &lt;h3&gt;Seeking Abstractions&lt;/h3&gt;  &lt;p&gt;&lt;a title="yes, he does not have a Twitter account" href="http://devlicious.com/blogs/rob_eisenberg"&gt;Rob Eisenberg&lt;/a&gt; and I were early adopters of WPF. At the same time, we were also in the feverish rush of applying Design Patterns to everything. You know, that phase of adoption where you’ve learned how to hammer and everything’s a nail. Still, it was good for us. We were digging through &lt;a href="http://martinfowler.com/eaaDev/PresentationModel.html"&gt;Fowler’s&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx"&gt;Gossman’s&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/dancre/archive/2006/10/11/datamodel-view-viewmodel-pattern-series.aspx"&gt;Crevier’s&lt;/a&gt; blogs. These sources began to shape my conceptions of ViewModel (or Presentation Model or Your Mama Model), however I was still deeply influenced by my lingering notion about the separation of Behavior and Feel.&lt;/p&gt;  &lt;p&gt;The result of this is that my idea of a ViewModel is a representation of the Behavior of the View. However, the ViewModel is agnostic about the Feel. This means I don’t build “formatting” and such into my ViewModel. I try to keep my ViewModels as “pure” and abstract as possible. This also means that I rarely take strong dependencies on WPF and Silverlight.&lt;/p&gt;  &lt;p&gt;Why go to such extremes? What’s the benefit?&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;My Fantasy World&lt;/h3&gt;  &lt;p&gt;There’s a lot of talk about &lt;a title="User Experience" href="http://en.wikipedia.org/wiki/User_experience_design"&gt;UX&lt;/a&gt; lately, and perhaps more fittinhly, &lt;a href="http://en.wikipedia.org/wiki/Interaction_design"&gt;Interaction Design&lt;/a&gt; (IxD). In reality, I fiind that there are few people are actually doing IxD. Although, I think that’s the audience that Expression Blend is targeted at (do you recall &lt;a href="http://blogs.msdn.com/tims/archive/2006/01/24/516706.aspx"&gt;what Blend was originally named&lt;/a&gt;?). These chimerical Interaction Designers are the ones that would benefit the most from this proposed separation of Behavior and Feel. &lt;/p&gt;  &lt;p&gt;Let’s imagine a we’re building a WPF application. Harkening back to that old, impressive sample of yesteryear, the behavior we need in our app is to “allow the user to select a state”. As a developer, we can create a ViewModel that embodies that behavior, we can test the ViewModel, and even build a simple, naive View (testing that the required bindings are present with &lt;a title="free WPF and Silverlight from the stone" href="http://www.codeplex.com/caliburn"&gt;Caliburn&lt;/a&gt; thank you). Then we can hand it over to an interaction designer. The designer can then radically alter the Feel without changing the Behavior. In fact, if we’re using something like Caliburn’s testability framework (not available in Silverlight unfortunately), these IxD peeps can exercise a great deal of liberty in establishing the most appropriate feel for the behavior.&lt;/p&gt;  &lt;p&gt;Unfortunately, our typical approach to software development inhibits IxD’ers from working this way. The Feel is often deeply entangled in the presentation logic (or worse).&lt;/p&gt;  &lt;h3&gt;Context&lt;/h3&gt;  &lt;p&gt;I’m sure that a large majority of WPF developers might see these distinction as useless. Especially, when building Line Of Business applications. &lt;strong&gt;That’s okay&lt;/strong&gt;. Not everyone needs to do this. Many projects don’t need the additional complexity that might be introduced by thinking in this way. However, I think this is an emerging field and UX/IxD will be increasingly important. Soon it will be the distinguishing factor in commercial software.&lt;/p&gt;  &lt;h3&gt;Wait, Wasn’t This About Value Converters&lt;/h3&gt;  &lt;p&gt;Yes, and here is how they fit in. Let’s take my &lt;a href="http://devlicio.us/blogs/christopher_bennage/archive/2009/08/22/answer-the-user-s-questions.aspx"&gt;current favorite example of formatting dates&lt;/a&gt;. We have a behavior that requires communicating some date/time information to the user. Applying my philosophy to our ViewModel, the developer should expose the raw data (an actual DateTime property) on the ViewModel and leave the rest up to the IxD’er. After careful consideration, research and usability testing, the designer decides the dates need to be formatted as “[x time ago]”. (See the &lt;a href="http://devlicio.us/blogs/christopher_bennage/archive/2009/08/22/answer-the-user-s-questions.aspx"&gt;referenced post&lt;/a&gt; if that doesn’t make sense.) The designer,&lt;span title="if this is fantasy, why not go all the way"&gt; who can likely write a bit of code&lt;/span&gt;, creates a value converter to format the date value as the Feel demands.&lt;/p&gt;  &lt;p&gt;Secondly, we could conceivably have multiple Views in an application for a single ViewModel. Each View would have a different Feel, and the application (or the user) could select the most appropriate (or comfortable one). &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Incidentally, when I first learned about MVC it was in the context of writing a &lt;/em&gt;&lt;a title="notice the date on this puppy!" href="http://www.adobe.com/devnet/flashcom/articles/minesweeper.html" target="_blank"&gt;&lt;em&gt;minesweeper game in Flash&lt;/em&gt;&lt;/a&gt;&lt;em&gt; where the user could switch between an isometric and top-down view.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;In the End&lt;/h3&gt;  &lt;p&gt;In real life, we’re not very close to this. There are few IxD’ers out there and most teams don’t need to be concerned about this. That means that for most practical purposes the Simplest Thing to Do &lt;em&gt;might &lt;/em&gt;be to forego value converters and hard code formatting in the ViewModel. Value converters, just like anything else, can be abused.&lt;/p&gt;  &lt;p&gt;Nevertheless, I definitely do &lt;em&gt;not&lt;/em&gt; consider them a worse practice.&lt;/p&gt;  &lt;p&gt;If you think I’m wrong, speak up. I am willing to listen. If you’ve been burned by the use of value converters, please share.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51934" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/WPF/default.aspx">WPF</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI/default.aspx">UI</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/XAML/default.aspx">XAML</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx">UX</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/viewmodel/default.aspx">viewmodel</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/mvvm/default.aspx">mvvm</category></item><item><title>Designer Wanted</title><link>http://devlicio.us/blogs/christopher_bennage/archive/2009/09/22/designer-wanted.aspx</link><pubDate>Tue, 22 Sep 2009 16:30:25 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:51618</guid><dc:creator>Christopher Bennage</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We need to contract a designer for our current project. I’m looking for one of those mythical beasts that has:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;some real graphics design skill&lt;/li&gt;    &lt;li&gt;understands (or at least cares about) usability&lt;/li&gt;    &lt;li&gt;works with Silverlight&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There is also a strong preference for someone in the NYC/NJ area.&lt;/p&gt;  &lt;p&gt;If you are interested or know someone who qualifies, please contact me through the blog.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=51618" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI/default.aspx">UI</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx">UX</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Usability/default.aspx">Usability</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Awesome+Opportunity/default.aspx">Awesome Opportunity</category></item><item><title>Answer the User’s Questions</title><link>http://devlicio.us/blogs/christopher_bennage/archive/2009/08/22/answer-the-user-s-questions.aspx</link><pubDate>Sat, 22 Aug 2009 16:27:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:50188</guid><dc:creator>Christopher Bennage</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;One little usability bit that I picked up from many of the Web 2.0 apps (in particular 37signals apps), is displaying date and times in a “how long since” format.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.silverarcade.com/community"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="Community page on Silver Arcade" border="0" alt="Community page on Silver Arcade" align="right" src="http://devlicious.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/christopher_5F00_bennage/8222009120042PM_5F00_3725CF83.png" width="356" height="353" /&gt;&lt;/a&gt;Take a look at the &lt;a href="http://www.silverarcade.com/community"&gt;community page&lt;/a&gt; on Silver Arcade. I wanted to display when a user became a member of the community. Instead of displaying the actual date that they signed up, I choose to convert that date to “how long ago”.&lt;/p&gt;  &lt;p&gt;At first I did this just because I liked it. Then it began to dawn on me that there are reasons that I like it.&lt;/p&gt;  &lt;h3&gt;Questions&lt;/h3&gt;  &lt;p&gt;One primary purpose of any UI is answering the user’s questions. “How much credit is left in this account?” “Is this customer currently active?” “How many days are left before this explodes?”&lt;/p&gt;  &lt;p&gt;Frequently, when we are displaying dates and times we are really trying to answer questions that begin with “how long ago did …” or “how soon until …”. &lt;/p&gt;  &lt;p&gt;When we display a simple date and time, such as&amp;#160; “August 22, 2009 12:11 PM”, we are providing raw data to the user, but we really aren’t answering their question. We’re leaving the final step up to them. That’s translating that raw data into a meaningful answer for their ‘how long’ question. Every translation has a cognitive cost.&lt;/p&gt;  &lt;p&gt;This may not seem like much, but the cognitive cost adds up very quickly. This can be one of those subtle points that makes two seemingly similar interfaces &lt;em&gt;feel&lt;/em&gt; so different.&lt;/p&gt;  &lt;p&gt;I’m not saying to display every date and time in your application in this format. Instead I am saying to ask “what question will my users have and am I really answering it”.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;To be fair, this is purely anecdotal and is not backed up with any empirical evidence.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=50188" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI/default.aspx">UI</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx">UX</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Usability/default.aspx">Usability</category></item><item><title>One day with Balsamiq Mockups: a review</title><link>http://devlicio.us/blogs/christopher_bennage/archive/2009/06/19/one-day-with-balsamiq-mockups-a-review.aspx</link><pubDate>Fri, 19 Jun 2009 04:03:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:47989</guid><dc:creator>Christopher Bennage</dc:creator><slash:comments>7</slash:comments><description>&lt;p&gt;We’ve just started a new Silverlight project and since &lt;strike&gt;our&lt;/strike&gt; &lt;em&gt;the&lt;/em&gt; &lt;a title="if you don&amp;#39;t believe, just ask him!" href="http://ayende.com/about-me.aspx"&gt;UI guy&lt;/a&gt; is not on site with us, I ended up with the task of producing screen mockups. Some interest was expressed in using &lt;a href="http://www.balsamiq.com/"&gt;Balsamiq Mockups&lt;/a&gt;, and this seemed like a good time to really take it for a&amp;#160; test drive.&lt;/p&gt;  &lt;h3&gt;What does it do?&lt;/h3&gt;  &lt;p&gt;Balsamiq is a tool for quickly authoring mockups of applications and websites. My favorite tool for doing mockups is pencil and paper (turns out that it’s really, really good). However, we needed something that we could readily show during a review meeting and my sketches don’t photocopy well.&lt;/p&gt;  &lt;p&gt;Nevertheless, I did my brainstorming on paper and I used it for my first round of reviews with the team. This left me with about a dozen pages storyboarding the core of our application. &lt;/p&gt;  &lt;p&gt;After the first review, I began recreate it with Balsamiq.&lt;/p&gt;  &lt;p&gt;In Balsamiq you start with a blank, gridded canvas and drag various UI elements from a library onto the canvas. It reminds me of Visio a bit, but without so much pain. All of the elements are styled to look like hand-drawn. This is important because it prevents anyone from assuming that the application is “done” when you’re just presenting mockups.&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="making a web page with Balsamiq" border="0" alt="making a web page with Balsamiq" src="http://devlicious.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/christopher_5F00_bennage/Untitled1_5F00_016725E9.jpg" width="646" height="667" /&gt; &lt;/p&gt;  &lt;p&gt;The elements in Balsamiq are impressively intelligent. Most elements allow you to type in some content and they react intuitively to that content. I was amazed a couple of time at how smartly they responded. Balsamiq ships with about 75 elements in its library and there are more &lt;a href="http://www.mockupstogo.net/"&gt;being posted&lt;/a&gt; all the time. You cannot really extend the library yourself however, though you can incorporate your own images.&lt;/p&gt;  &lt;p&gt;Each mockup screen is a single file. They are XML so it’s source control friendly. If you are mocking up an entire application (like I was) you can link the files together. Many of the elements have a link property that you can point to any other Balsamiq files in the same directory. Once you’ve linked up some files, you can “run” your mockups in presentation mode. This allows you to navigate around the application and toggle annotations (like the sticky note in my screen shot). The presentation mode is really cool.&lt;/p&gt;  &lt;h3&gt;Should you buy it?&lt;/h3&gt;  &lt;p&gt;I think that mocking up the UI is a very useful exercise. It helps to expose the behavior of the application that you are going to build and surfaces many insights into what it &lt;em&gt;really&lt;/em&gt; needs to do. I still prefer to use paper and pencil for the initial pass. However, I found that following this up with Balsamiq forced me to think through the entire flow of my appplication. My paper storyboards had holes in them that I did not realize until I attempted to express them in Balsamiq.&lt;/p&gt;  &lt;p&gt;The reviewers were really excited to see the Balsamiq mockups and being able to walk them through the application was a definite plus for them. The tool is easy to use. I would say that any &lt;strike&gt;designer&lt;/strike&gt; developer doing UI work should be using a tool like Balsamiq.&lt;/p&gt;  &lt;p&gt;What it offers for $79 is really hard to beat. Admittedly, I don’t know what other tools are out there and how they compare. By itself, I think it definitely worth it for anyone doing UI work.&lt;/p&gt;  &lt;p&gt;Of course, there is SketchFlow. It is coming. I think that SketchFlow looks very promising, especially for us XAML guys, but it’s not available yet. I’ll let you know what I think about the overlap once I get a change to actually use SketchFlow.&lt;/p&gt;  &lt;h3&gt;Little Things&lt;/h3&gt;  &lt;p&gt;I had a couple of annoyances that are worth pointing out. &lt;/p&gt;  &lt;p&gt;First, you cannot create reusable components. For example, I had certain elements of the application that appeared in several places. I had to clone these elements, but when I needed to change them, I had to make the change in each element. (Another reason to start with pencil).&lt;/p&gt;  &lt;p&gt;I think that it would also be nice if there was a “back button” in presentation mode. Within my mockup I had a few screens that you could get too in multiple ways, however I did not have an easy way of returning the the previous screen.&lt;/p&gt;  &lt;p&gt;I also get the impression that the community around Balsamiq likes to poke fun at us PC guys. I smile politely.&lt;/p&gt;  &lt;p&gt;Finally, Balsamiq likes to keep all of the linked files open. You’ll notice an excessive number of tabs on the bottom of the screen shot. Those are all the screens within the application I was mocking. It became a little difficult to find that right one.&lt;/p&gt;  &lt;p&gt;On the whole, Balsamiq is a smart application and I expect to see great things as it matures. Many of its features are intuitive and “just work”, and that’s how I like my software to roll.&lt;/p&gt;  &lt;pre&gt;:-P&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=47989" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/development+tools/default.aspx">development tools</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI/default.aspx">UI</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx">UX</category></item><item><title>UX Patterns (and not UI Architecture Patterns)</title><link>http://devlicio.us/blogs/christopher_bennage/archive/2009/02/05/ux-patterns-and-not-ui-architecture-patterns.aspx</link><pubDate>Thu, 05 Feb 2009 19:19:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:43983</guid><dc:creator>Christopher Bennage</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Just when you think that you finally have an accurate label to describe something, you discover the true ambiguity of the term.&lt;/p&gt;  &lt;h3&gt;What is UX?&lt;/h3&gt;  &lt;p&gt;UX means &lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/User_experience" target="_blank"&gt;User Experience&lt;/a&gt;&lt;/em&gt;. You might say that it is the &lt;em&gt;ergonomics&lt;/em&gt; of an user interface, or possibly the&lt;em&gt; level of intuitiveness&lt;/em&gt;. More plainly, good UX means that the users of the software are able to quickly understand how to use and don’t have to go out of their way to make things happen. This blurs a little bit into the concept &lt;a href="http://en.wikipedia.org/wiki/Usability" target="_blank"&gt;Usability&lt;/a&gt;. But UX just sounds so much sexier, and there is this aspect of producing chemistry between the user and software that transcends mere Usability.&lt;/p&gt;  &lt;p&gt;Why do I bring this up? Well, I’ve just started talking about &lt;a href="http://devlicious.com/blogs/christopher_bennage/archive/2009/01/19/ui-patterns-for-wpf.aspx" target="_blank"&gt;UI Architecture patterns&lt;/a&gt; and I wanted to make sure the concepts were distinct. When I talk about UI architecture patterns I’m talking about the structure of the code that underlies a user interface. It’s all non-visual stuff. On the other hand, UX patterns deal with the rendered view that is presented to the user.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devlicious.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/christopher_5F00_bennage/Quince_5F00_2E46BB8C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 0px 4px;display:inline;border-top:0px;border-right:0px;" title="Quince" border="0" alt="Quince" align="right" src="http://devlicious.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/christopher_5F00_bennage/Quince_5F00_thumb_5F00_5BC7DB4F.png" width="244" height="47" /&gt;&lt;/a&gt;Infragistics just recently published a very cool (and Silverlight-based) catalog of UX Patterns called &lt;a href="http://quince.infragistics.com/" target="_blank"&gt;Quince&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You might be inclined to say, “Well, that’s nice for designers, but…”. Please don’t, this is really a useful for tool for anyone building user interfaces, even if those interfaces are basic and handed off to a design team. In the very least, this will help establish a common vocabulary for talking about user interfaces.&lt;/p&gt;  &lt;h3&gt;More Resources&lt;/h3&gt;  &lt;p&gt;If you are interested in know more about UX and usability, here’s a couple of resources: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.useit.com/" target="_blank"&gt;Jakob Nielsen&lt;/a&gt; – very well know and full of good info, but he is definitely plain usability with none of the sizzle.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321344758?ie=UTF8&amp;amp;tag=bluspiconinc-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321344758" target="_blank"&gt;Don’t Make Me Think&lt;/a&gt; – one of the first books I read on the subject. (I probably need to reread it, it’s been so long…)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=43983" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI/default.aspx">UI</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UI+Patterns/default.aspx">UI Patterns</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/UX/default.aspx">UX</category><category domain="http://devlicio.us/blogs/christopher_bennage/archive/tags/Usability/default.aspx">Usability</category></item></channel></rss>