<?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/"
xmlns:series="http://unfoldingneurons.com/"
><channel><title>Larry Ullman &#187; user interface</title> <atom:link href="http://www.larryullman.com/tag/user-interface/feed/" rel="self" type="application/rss+xml" /><link>http://www.larryullman.com</link> <description>Translating Geek Into English</description> <lastBuildDate>Mon, 21 May 2012 11:03:07 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>What Is Larry Thinking? #46 =&gt; JavaScript, Sexism, and Bad User Interface</title><link>http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/</link> <comments>http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#comments</comments> <pubDate>Fri, 21 Oct 2011 05:22:00 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[apple]]></category> <category><![CDATA[books]]></category> <category><![CDATA[file]]></category> <category><![CDATA[jsdd]]></category> <category><![CDATA[newsletter]]></category> <category><![CDATA[permissions]]></category> <category><![CDATA[security]]></category> <category><![CDATA[silk]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=2845</guid> <description><![CDATA[In this edition… About This Newsletter What Are You Thinking? =&#62; Using JavaScript On the Web =&#62; Amazon Silk: A New Mobile Browser On the Web =&#62; Steve Jobs and Dennis Ritchie, in Memoriam On the Blog =&#62; Why There Are Few (No?) Good JavaScript Books Q&#38;A =&#62; Could You Explain File Permissions? What is [...]]]></description> <content:encoded><![CDATA[<p> In this edition…</p><ul><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#about">About This Newsletter</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#you">What Are You Thinking? =&gt; Using JavaScript</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#web1">On the Web =&gt; Amazon Silk: A New Mobile Browser</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#web2">On the Web =&gt; Steve Jobs and Dennis Ritchie, in Memoriam</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#blog">On the Blog =&gt; Why There Are Few (No?) Good JavaScript Books</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#qa">Q&amp;A =&gt; Could You Explain File Permissions?</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#thinking">What is Larry Thinking =&gt; Sexism and Bad User Interface</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#giveaway">Book Giveaway =&gt; &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; (4th Edition)</a></li><li><a
href="http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/#news">Larry Ullman&#8217;s Book News =&gt; &#8220;Modern JavaScript: Develop and Design&#8221;</a></li></ul><p> <span
id="more-2845"></span></p><h2 id="about">About This Newsletter</h2><p>Life is busy here and I&rsquo;m well behind schedule on all fronts, so this newsletter is getting out about a week to ten days late. I&rsquo;m taking consolation in the fact that I&rsquo;ve kept pretty close to a three-week schedule for the past year (about 15 newsletters sent in that time). Rather than blather on, let’s get on with the show!</p><p>As always, questions, comments, and all feedback are much appreciated. And thanks for your interest in what I have to say and do!</p><h2 id="you">What Are You Thinking? =&gt; Using JavaScript</h2><p>So I&rsquo;m working on my next book, &ldquo;Modern JavaScript: Develop and Design.&rdquo; As I write about in a blog post (also mentioned later in this newsletter), JavaScript is kind of a tricky language to write a book about, as a lot of information is required just to do a basic thing such as form validation. Like any of my books, I&rsquo;m working hard to use lots of good, real-world examples to demonstrate the new information being taught. Thus far, with two real code chapters in the bank, most examples are based upon form validation and data manipulation. These are obviously crucial uses of JavaScript, and good ways to practice some of the early material. Some readers have let me know that they&rsquo;re hoping to see lots and lots of examples, so I thought I&rsquo;d go ahead and send a direct request out asking what, if any, specific examples or topics you&rsquo;d like to see in the book. What do you know you need to use JavaScript for? What are you curious about? What have you seen that you know is confusing to you and you&rsquo;d like clarification on?</p><p>All thoughts and suggestions are welcome and very much appreciated. As an incentive, I&rsquo;ll go ahead and give away ten copies of &ldquo;Modern JavaScript: Develop and Design&rdquo; to people with the best responses.</p><h2 id="web1">On the Web =&gt; Amazon Silk: A New Mobile Browser</h2><p>As you may have seen, <a
href="http://www.amazon.com/?tag=larrullm09-20">Amazon</a> announced their new lineup of Kindles recently, from the <a
href="http://amzn.to/qQREgw">$79 base version</a> to the <a
href="http://amzn.to/oZyxhk">$199 Kindle Fire</a>, a rival to Apple&rsquo;s iPad. One thing that piqued my interest about the Kindle Fire is that it includes a new, custom Web browser, named <a
href="http://amazonsilk.wordpress.com/">Silk</a>. Amazon posted <a
href="http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/">an introduction to Silk</a>, along with a six-minute video, on their site, too. A lot on that page and in the video is marketing hype, but they raise some interesting points about the fact that Web browsers are fundamentally the same as they were 15 years ago, and aren&rsquo;t ideal for today&rsquo;s use, especially with all the mobile devices. Now the solution they came up with seems to be something akin to a reverse CDN: Whereas a CDN takes the load off of one server and shares it across a network of servers, Amazon Silk uses Amazon Web Services (AWS) to reduce the load on the device. From just what I&rsquo;ve seen, it doesn&rsquo;t seem like they&rsquo;ve addressed a problem with browsers, but rather with the HTTP protocol, introducing their own gateway to improve the communications. It&rsquo;ll be interesting to see what impact this new approach has, and how, if at all, it affects Web development in the years to come.</p><h2 id="web2">On the Web =&gt; Steve Jobs and Dennis Ritchie, in Memoriam</h2><p>As I&rsquo;m sure you&rsquo;re all aware, Steve Jobs, one of the founders of Apple, passed away just recently. You may also know that I&rsquo;m a pretty big fan of Apple. I first learned to program Basic on an Apple IIe, the first computer I purchased was a Macintosh Color Classic, and I&rsquo;m probably on my 10th or 12th Mac by now. I&rsquo;m not saying Macs are better than PCs, and they&rsquo;re certainly not cheaper, but I definitely prefer them. A lot has been said and written about Jobs since his passing, such that I have little to add, except I would offer that I what I think was the most brilliant thing that happened during Jobs&rsquo;s tenure was the ability to get non-Mac people to buy Apple products. For decades, if you purchased an Apple product, you were buying either a Mac or Apple software to run on a Mac. This accounted for at best about 5% of the computing population. Thanks to the iPod, iPhone, and iPad, almost all computer users and a majority of mobile phone users have one or more Apple products, whether or not they ever bought an Apple computer (and many of these people have since started buying Macs, too). Just brilliant, and the clear reason why Apple has become one of the most valuable companies in the world. Had you told me 15 years ago that Apple would become a dominant computer company and Bill Gates a prominent philanthropist, I wouldn&rsquo;t have believed you.</p><p>Jobs&rsquo;s other huge success was with Pixar, although he probably had less directly to do with Pixar&rsquo;s success than the brilliant talents employed there. Jobs purchased what became Pixar from George Lucas, helped build it up, and when Pixar was purchased by Disney, Jobs became the single largest shareholder of Walt Disney. Quite the life. If you&rsquo;d like one more little blip about Jobs, check out his <a
href="http://www.youtube.com/watch?v=D1R-jKKp3NA">Stanford commencement address</a> from 2005. In it, Jobs talks candidly about work, life, and death.</p><p>Days after Steve Jobs passed away, <a
href="http://www.nytimes.com/2011/10/14/technology/dennis-ritchie-programming-trailblazer-dies-at-70.html">Dennis Ritchie</a> died, garnering much, much less media attention. Dennis Ritchie arguably had a bigger impact on computing and the world than Jobs, but is no household name. If you&rsquo;re not familiar with Ritchie, all he did was create the C programming language, and helped develop the Unix operating system. C is one of the most important programming languages of all time. It has greatly influenced many other languages, and is still used widely today. In fact, PHP, Python, and Perl are all written in C! Unix, and its inspired variants such as Linux, is running most of the Internet, along with Apple&rsquo;s iOS devices, Tivo&rsquo;s, and many other devices.</p><h2 id="blog">On the Blog =&gt; Why There Are Few (No?) Good JavaScript Books</h2><p>Just yesterday, I <a
href="http://www.larryullman.com/2011/10/18/why-there-are-few-no-good-javascript-books/">posted a blog article</a> discussing my thoughts on why there are so few good JavaScript books. In part this post stems from time spent skimming through other JavaScript books and thinking &ldquo;Really, you&rsquo;re doing that in this book?&rdquo; And, in part, in formally writing a JavaScript book now myself, I&rsquo;m aware of some of the unique challenges that JavaScript poses for writers.</p><h2 id="qa">Q&amp;A =&gt; Could You Explain File Permissions?</h2><p>File permissions and file paths are probably two of the things that I get the most questions on, and that beginners are most often confused about. Some time back, Martin had asked if I&rsquo;d explain file permissions, and even though a previous newsletter <a
href="http://www.larryullman.com/2011/01/06/what-is-larry-thinking-35-securing-content-and-more/#qa1">touched upon the subject</a>, it&rsquo;s worth going into again and in more detail. For a couple of reasons, I&rsquo;m going to ignore Windows permissions and focus on *nix, which includes Unix, Linux, and Mac OS X. First, all these operating systems share the same permissions scheme. Second, statistically, most Web servers are running one of these operating systems. Third, permissions in Windows rarely need to be altered or cause problems, in my experience. And, fourth, you&rsquo;re much more likely to be confused by *nix permissions, which are as follows…</p><p>File and folder permissions are an operating system&rsquo;s way of dictating who can do what to that file or folder. There are three permissions that can be granted or denied: <em>read</em>, <em>write</em>, and <em>execute</em>. For files, read means the ability to literally open and read the file; write means the ability to modify the file; and execute means the ability to run the file (e.g., as an executable or a script). For directories, read means the ability to see the names of the files in the directory; write means the ability to modify the directory (such as create, rename, or delete files and folders therein); and execute means the ability to traverse the directory (i.e., be able to go into it). You&rsquo;ll see these permissions represented by both letters—r, w, and x—and octal (base-8) numbers: 4 (read), 2 (write), and 1 (execute). These numeric values correspond to bits, meaning that different sums from 0 to 7 represent unique permission combinations. For example, 5 has to be read plus execute; 6 has to be read plus write; and, 7 is all three (5, 6, and 7 are the most common permissions digits you&rsquo;ll see).</p><p>Now for every file and folder, these permissions can be set for three types of users: the owner, the owner&rsquo;s group, and everyone. For example, on a Web server, you may have an account under the username <em>trout</em>. Your username will also be associated with a group, such as <em>clients</em>. Other people with accounts on the same server will have different usernames but may be part of the same group. There will also be other groups, such as <em>staff</em> or <em>mysql</em>. The permissions on any file or folder can be set as three octal digits, where the first digit represents the owner&rsquo;s permissions, the second represents the owner&rsquo;s group&rsquo;s permissions (i.e., the permissions for other people in that group), and the third digit represents the permissions for everyone else. 644 permissions mean that you can read from and write to that file or folder, while everyone else can only read from it. Written using letters instead of octal numbers, you&rsquo;ll see a file or folder&rsquo;s permissions represented using 10 characters: the first reflects other details about the file or folder (I won&rsquo;t get into that here); the next three are for the owner&rsquo;s read, write, and execute permissions; the next three for the owner&rsquo;s group&rsquo;s read, write, and execute permissions; and the last three for everyone&rsquo;s. Thus, the octal 644 becomes -rw-r&#8211;r&#8211;. The octal 755 is -rwxr-xr-x.</p><p>So there are the basics and the hieroglyphics you&rsquo;ll occasionally see; what does this mean in actual application? For starters, you need to understand that the third category—everyone else—means everyone else <em>on the computer</em>, not everyone else in the universe. For example, if you create a directory with open permissions—777 or -rwxrwxrwx, that doesn&rsquo;t mean anyone with an Internet connection can modify that directory&rsquo;s contents. No. You can only modify a directory&rsquo;s contents if you have access to the server&rsquo;s file system, which means you&rsquo;ve connected to the server via FTP or command line (SSH, telnet) access. And that kind of access requires using an account recognized by the server. But what about loading a Web page in the browser? Well, that is a type of server access, but not <em>file system access</em>. When a user goes to a Web site in the browser, the user isn&rsquo;t interfacing with the server&rsquo;s file system, but actually with the Web server software, such as Apache. Apache then does the actual accessing of the file system. So don&rsquo;t fret that assigning open permissions to a file or directory means that anyone in the universe has access. That&rsquo;s not the case.</p><p>But it is the case that an open file or directory on the server is accessible by any valid user on that server, assuming that other restrictions are not in place and that the user knows about its existence. For examples of restrictions, PHP can easily be limited as to which directories it can access and which it cannot. The same goes for Apache. In fact, the biggest security concern isn&rsquo;t that <em>people</em> can access and manipulate your files and folders, but rather that <em>software running on the server can</em>. And this is where you have to be careful. Many hacks take advantage of security holes in scripts or applications to make Apache and PHP—the software already running on the server—do something malicious. All things considered, this doesn&rsquo;t mean you should be cavalier about assigning open permissions, but it does mean that it&rsquo;s not out-and-out irresponsible to use them when needed. Speaking of which…</p><p>The last real-world issue you&rsquo;ll come across, which is a big complication for many, is establishing the correct permissions to allow for file uploads, or for PHP to write a text file, and the like. When you upload files to the server using FTP, or even create a directory using FTP, the owner of the uploaded file or folder will be you. The PHP script that needs to write to that text file or directory (in this case, &ldquo;write&rdquo; means to modify the directory by moving a file into it), will be running as a different user, namely the user that the Web server software (e.g., Apache) is running as (Apache commonly runs as &ldquo;nobody&rdquo;). In order for PHP to do what it needs to do, permissions need to be modified so that the Apache user can write to it. Normally this means using 755 as the permissions.</p><p>If you do need to create open directories and files, there are ways you can improve the security of using them, most of which I highlighted <a
href="http://www.larryullman.com/2011/01/06/what-is-larry-thinking-35-securing-content-and-more/#qa1">in that previous newsletter</a>. For starters, always try to put these directories outside of the Web root directory, and then use a <a
href="http://www.larryullman.com/2011/01/06/what-is-larry-thinking-35-securing-content-and-more/#thinking">proxy script</a> to safely fetch the contents. By doing so, you&rsquo;re able to mitigate the increased security risk of having open directories and files by adding a layer of protection against accessing the content therein.</p><h2 id="thinking">What is Larry Thinking? =&gt; Sexism and Bad User Interface</h2><p>About fifteen years ago, when I was working at Borders bookstores (RIP), a co-worker got married. Afterward, she was talking one day about how she had gone into her bank to add her new husband to her account. The bank added her husband to the account and let her know that her husband would have to come in and authorize her before she could access the account herself. Wait, what? Yes, she went in, added her husband, and was no longer able to use the account that only moments earlier had been hers. This is because the bank&rsquo;s policy was for men to be the primary account holders. As soon as her husband was added to the account, it became his account. This is just a lovely bit of institutional sexism, I think, especially when you consider that I&rsquo;m talking about the mid-1990&rsquo;s here, not 1950! I do not know what happened beyond that—I would hope she&rsquo;d change banks, but beyond the sexism, it amazed me that a system was in place in which a person has the power to disempower themselves. A very strange concept.</p><p>My wife works in the field of education, which in the United States is known for many things, among them having broad, institutional dictums imposed upon schools and faculty. A frequent cause of problems is the software people are forced to use. Having software forced upon you is a hazard all employees face, but given the situation of public schools, such software is inevitably created under the worst of all possible situations:</p><ul><li>The software needs are identified by a committee of people, none of whom will actually be using the software.</li><li>Undoubtedly a requirement is that the software can run on old, outdated computers.</li><li>The budget will be tight.</li></ul><p>Take these three things together, and you can plan on getting software that takes way too long to complete, that will be outdated and impractical upon its released, and that will be used for far too long from there. This sounds jaded, perhaps, and I&rsquo;m certainly exaggerating some, but this is essentially the situation the American education system, if not the entire American government, is in when it comes to developing custom software.</p><p>The reason I&rsquo;m thinking about this now, is that my wife was using one of these less-than-ideal applications the other day. The application itself is kind of like project management software and she was responsible for maintaining a project&rsquo;s particulars through this system. Due to a lack of good documentation, she had misidentified her role on the project (within the system) and went back in to change her role. She selected what she thought was the right role for her account on that project and ended up removing her own administrative ability to manage the project. In other words, she locked herself out, and she was ostensibly the project manager! Again, why would someone create the ability for an administrator to de-administer themselves? And, what&rsquo;s worse, absolutely no warning was given to my wife (i.e., the user) that this would be a consequence of the action about to be taken.</p><p>By comparison, my role on a project was just turned over to someone else, and part of that project involved making use of Amazon&rsquo;s resources. Amazon, which I feel generally does everything right, did not allow me, the administrator, to just remove my name and email address from the system, thereby shutting out anyone&rsquo;s access. Instead, to make the switch from me to this other person, I had to add her to the system and give her administrative access. She, then, could go in and remove my administrative access. Was this a bit more complicated? Yes. But it was the right way to handle this scenario and it worked without problem.</p><p>This, then, is a call to you: the next time you&rsquo;re working on a Web site or application, think about the user interface and make sure it makes logical sense. Write the functionality so that administrators cannot disable their own access to the system. And include great documentation, and provide many, clear warnings when actions are about to be taken that are permanent. Oh, and if you&rsquo;re running a bank, how about letting a person know that she is about to be blocked out of her own account? Or, you know, just make your policies less sexist.</p><h2 id="giveaway">Book Giveaway =&gt; &#8220;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&#8221; (4th Edition)</h2><p>As I expected, there was a wonderful response to my &ldquo;PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide&rdquo; (4th edition) giveaway. Unfortunately, I haven&rsquo;t yet had the time to respond to everyone, or really anyone. For this I apologize, and I hope to do that within the week. So if you wrote in hoping for a book, rest assured that just because you haven&rsquo;t heard from me yet means you won&rsquo;t be getting a copy (conversely, it doesn&rsquo;t mean you necessarily will, either). What really happened is that I&rsquo;m just swamped. Apologies again!</p><p>I&rsquo;ll be able to give away a few more copies of this book in a future newsletter.</p><h2 id="news">Larry Ullman&#8217;s Book News =&gt; &#8220;Modern JavaScript: Develop and Design&#8221;</h2><p>I just submitted Chapter 5 of &ldquo;Modern JavaScript: Develop and Design&rdquo;, which means I&rsquo;m about 30% done with the first draft (well, first submitted draft: there are multiple internal drafts prior to that). Progress is going more slowly than I&rsquo;d like, but I&rsquo;ve had sick kids and other personal issues making it harder to get to work. I always hope I&rsquo;m about to turn a corner and speed up. One of these days, I will!</p><p>The first three chapters cover Part 1 of the book, which represents the fundamentals of JavaScript. Chapter 1 is a bit of an introduction to JavaScript overall. Chapter 2 provides a sneak peak at how JavaScript is used in a Web browser. Chapter 3 discusses and demonstrates several tools you&rsquo;ll want to use.</p><p>The second part of the book is the heart of JavaScript as a true programming language. Chapter 4 covers simple data types (numbers, strings, and Booleans). Chapter 5 is on control structures: conditionals and loops. Now I&rsquo;m turning to the fun stuff, and the topics that differentiate JavaScript from other languages. This includes objects (Chapter 6), functions (Chapter 7), events (Chapter 8), and the browser (Chapter 9). Hopefully by the next newsletter I&rsquo;ll have those four chapters written. Hopefully!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2011/10/21/what-is-larry-thinking-46-javascript-sexism-and-bad-user-interface/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>The Second Rule of User Interface</title><link>http://www.larryullman.com/2010/04/17/the-second-rule-of-user-interface/</link> <comments>http://www.larryullman.com/2010/04/17/the-second-rule-of-user-interface/#comments</comments> <pubDate>Sat, 17 Apr 2010 08:27:21 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=951</guid> <description><![CDATA[Some months ago, I wrote a post titled . The rule is simple: A proper user interface sets the user up to succeed. By this I mean that if the site requires certain information, or information in a specific format, that should be clearly indicated in the user interface. A site, or any application, should [...]]]></description> <content:encoded><![CDATA[<p>Some months ago, I wrote a post titled <a
href="http://www.larryullman.com/2010/02/27/the-first-rule-of-user-interface/">The First Rule of User Interface</a>. The rule is simple: <strong>A proper user interface sets the user up to succeed.</strong> By this I mean that if the site requires certain information, or information in a specific format, that should be clearly indicated in the user interface. A site, or any application, should make it clear up front what is expected, as opposed to indicating what the user should have done only upon a failure to do so. Tightly coupled with this is my &#8220;Second Rule of User Interface&#8221;: <strong>Don&#8217;t fight the user&#8217;s habits</strong>. If the first rule could be paraphrased as &#8220;Tell the user what you expect&#8221;, then second rule could be said &#8220;Don&#8217;t deny what the user expects.&#8221;</p><p>This rule comes into play in many ways, from where navigation elements should be located, to how buttons and links behave. It also means that you shouldn&#8217;t &#8220;break the browser&#8221; by attempting to disable JavaScript features (such as Control+Clicking or Right+Clicking on an element), preventing use of the back button, and so forth. This last issue—wanting the user not to use the back button—is a big mistake. (And keep in mind that most attempts to circumvent common browser behavior can be easily circumvented by disabling JavaScript.)</p><p>Fortunately, you can have your proverbial cake and eat it, too. This is to say, there are ways to accomplish your goals without undermining standard user or browser behavior. For example, if it might be a problem if the user clicks the back button, write the site&#8217;s code to address that possibility (sessions can be used towards that end). As another example, if you don&#8217;t want the user to copy images, well, that&#8217;s a tougher one. You can use JavaScript to prevent that, but JavaScript can be disabled. You can embed the image in Flash so that it&#8217;s not directly copy-able, but the user could still take a screen shot. The fix is simple: add a watermark to the images, when necessary. With any possible example, the main idea is this: when something a user, or the browser, might commonly do could be a problem for your site, program the site to handle that possibility. Whatever you do, don&#8217;t try to prevent the user from doing something their accustomed to doing on every other site they visit. If you take that approach, all you&#8217;ll succeed in is driving away your visitors.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2010/04/17/the-second-rule-of-user-interface/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Validation Suggestions</title><link>http://www.larryullman.com/2010/03/13/validation-suggestions/</link> <comments>http://www.larryullman.com/2010/03/13/validation-suggestions/#comments</comments> <pubDate>Sat, 13 Mar 2010 16:00:25 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category> <category><![CDATA[validate]]></category> <category><![CDATA[validation]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=956</guid> <description><![CDATA[I was reading some articles about validation routines in Flex (as part of a book I&#8217;m writing on Flex + PHP), when I came across a particular article that&#8217;s part of  the Adobe Developer Connection. The specifics of the article revolve around validation in Flex, of course, but I thought that the section on &#8220;Best [...]]]></description> <content:encoded><![CDATA[<p>I was reading some articles about validation routines in Flex (as part of a <a
href="http://www.larryullman.com/2010/01/22/my-next-book/">book I&#8217;m writing on Flex + PHP</a>), when I came across a <a
href="http://www.adobe.com/devnet/flex/quickstart/validating_data/">particular article</a> that&#8217;s part of  the <a
href="http://www.adobe.com/devnet/">Adobe Developer Connection</a>. The specifics of the article revolve around validation in Flex, of course, but I thought that the section on &#8220;Best Practices for Client-Side Validation&#8221; would be good reading for any one doing user interface. There are four suggestions there, all on how an application should <span
style="text-decoration: underline;">treat</span> the user. Those suggestions are:</p><ol><li>Prevent, Don&#8217;t Scold</li><li>Give Immediate Feedback</li><li>Let the User Work</li><li>Innocent Until Proven Guilty</li></ol><p>The first rule ties in nicely to a post I just wrote on <a
href="http://www.larryullman.com/2010/02/27/the-first-rule-of-user-interface/">putting the user in a place where they can succeed</a>. I don&#8217;t want to waste time here re-iterating what&#8217;s said there, but give it a read—at least that part about best practices—and keep that perspective in mind the next time you go to design a user interface.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2010/03/13/validation-suggestions/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>The First Rule of User Interface</title><link>http://www.larryullman.com/2010/02/27/the-first-rule-of-user-interface/</link> <comments>http://www.larryullman.com/2010/02/27/the-first-rule-of-user-interface/#comments</comments> <pubDate>Sat, 27 Feb 2010 11:47:50 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[error]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=946</guid> <description><![CDATA[The other day I was registering to use a state government Web site. I think government sites often tend to be among the worst offenders when it comes to usability. In part this is because they&#8217;re always outdated and, I suspect, because the financing for the site was based upon meeting the government organization&#8217;s specific [...]]]></description> <content:encoded><![CDATA[<p>The other day I was registering to use a state government Web site. I think government sites often tend to be among the worst offenders when it comes to usability. In part this is because they&#8217;re always outdated and, I suspect, because the financing for the site was based upon meeting the government organization&#8217;s specific needs, not giving the end users what they want (generally speaking, there are exceptions, of course). This particular site had the added deficit of being developed using aspects of ASP.NET that make the site only usable for Internet Explorer (that&#8217;s acceptable? really?). So I have to dust off off my Windows setup (I primarily use Macs), just to run Internet Explorer (really?), and I go to register&#8230;</p><p>I fill out the form properly, I thought, then click submit. At that point I see a message about my chosen password being invalid because it didn&#8217;t contain both upper- and lowercase letters, plus at least one number. That&#8217;s a fine requirement, of course, but <em>why didn&#8217;t the registration form indicate those requirements</em>? It&#8217;s obvious that an email field needs a valid email address, but if you&#8217;re developing a site and you know that you&#8217;re going to validate a field to confirm that it includes both upper- and lowercase letters, plus at least one number, how about telling the end user that, too? So here&#8217;s the first, most important rule of a good user interface:</p><p><strong>A proper user-interface sets the user up to succeed. </strong></p><p>Whether you&#8217;re designing a Web site, managing a group of people, or being a parent, you have to put your users, employees, and children in a place where they can do things well. And by &#8220;well&#8221;, I mean: they can do things they way you think they should!</p><p>Conversely, I just finished doing my United States taxes, which I always do online using <a
href="http://www.turbotax.com">TurboTax</a>. I use TurboTax primarily because the user interface is extraordinarily well done. For example, it&#8217;ll ask you a seemingly random, strange question, like &#8220;Did you roll over the proceeds from a farming operation into a non-work-related 403b?&#8221; I might look at that and go &#8220;huh?&#8221; but one great thing TurboTax does is add parenthetical notes like &#8220;This is not common.&#8221; Simple and brilliant. And TurboTax has other nice features, like indicating where you are in the process, reviewing the data you&#8217;ve entered, and so forth, but the clear messages—right where I&#8217;m focusing at that moment—make it easy for me to use the system properly.</p><p>It can be tricky for developers, who are theoretically quite knowledgeable about computers, to put themselves in the mindset of an end user, but there here is one simple way to create a successful user-interface: look at what you&#8217;re doing on the server side of things. If you&#8217;re going to check a password field for a number, put a message on the form saying a number is required. The same goes for a length requirement. If a date will be validated against a given format (like four digits for the year), have the form indicate the proper format, too. The same goes for phone numbers. If a username can&#8217;t contain a space, say as much. Set the user up to succeed instead of making them feel stupid for not doing something they weren&#8217;t told to do in the first place!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2010/02/27/the-first-rule-of-user-interface/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>The $300 Million Button</title><link>http://www.larryullman.com/2009/05/26/the-300-million-button/</link> <comments>http://www.larryullman.com/2009/05/26/the-300-million-button/#comments</comments> <pubDate>Tue, 26 May 2009 12:50:33 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[html forms]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=424</guid> <description><![CDATA[If you haven&#8217;t yet read it, this article called The $300 Million Button is well worth your five minutes. It&#8217;s by Jared M. Spool and posted on the User Interface Engineering Web site. I don&#8217;t want to give away the secret of the article, but it discusses a very common practice on e-commerce sites, and [...]]]></description> <content:encoded><![CDATA[<p>If you haven&#8217;t yet read it, this article called <a
href="http://www.uie.com/articles/three_hund_million_button/">The $300 Million Button</a> is well worth your five minutes. It&#8217;s by <a
href="http://www.uie.com/brainsparks/author/jared/">Jared M. Spool</a> and posted on the <a
href="http://www.uie.com/">User Interface Engineering</a> Web site. I don&#8217;t want to give away the secret of the article, but it discusses a very common practice on e-commerce sites, and how it tests with end users.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2009/05/26/the-300-million-button/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Better HTML Forms</title><link>http://www.larryullman.com/2008/12/14/better-html-forms/</link> <comments>http://www.larryullman.com/2008/12/14/better-html-forms/#comments</comments> <pubDate>Sun, 14 Dec 2008 22:27:01 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[html forms]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=47</guid> <description><![CDATA[One of the sessions I attended at the 2008 Adobe MAX conference in San Francisco was Creating Attractive, Usable, and Accessible Forms, presented by Rob Huddleston. I went to this session as part of my current drive to improve my user interface (UI) and Web accessibility skills. In this post I&#8217;ve collected a few do&#8217;s [...]]]></description> <content:encoded><![CDATA[<p>One of the sessions I attended at the 2008 Adobe MAX conference in San Francisco was <em>Creating Attractive, Usable, and Accessible Forms</em>, presented by <a
href="http://www.robhuddleston.com">Rob Huddleston</a>. I went to this session as part of my current drive to improve my <a
href="http://www.larryullman.com/tag/user-interface/">user interface (UI)</a> and Web accessibility skills. In this post I&#8217;ve collected a few do&#8217;s and dont&#8217;s that I jotted down during Huddleston&#8217;s presentation. As was the case for me, you&#8217;ll likely already know some of these, some might serve as reminders of something you already knew, and hopefully a couple will make you think about rewriting some of your HTML forms today.<span
id="more-47"></span> <a
href="http://www.larryullman.com/examples/better_html_forms.html" target="_blank">Click here to view an example of some of these ideas.</a></p><p><strong>An HTML form should&#8230;</strong></p><ul><li>Provide good instructions. Indicate to the user what they should do, what will happen next, etc.</li><li>Clearly indicate which fields are required. Use of asterisks, bold font, or a different font color is the standard. Also have a note that indicates that these formatting changes mean the fields are required.</li><li>Explain why specific data is being requested. This is particularly important, as you want to make the user comfortable when providing their personal information. If you&#8217;re asking for anything sensitive or just somewhat unusual, make sure you include the reason why. It&#8217;s also a good idea to let the user know that their personal information&#8211;email address and phone number, in particular&#8211;won&#8217;t be used for malicious purposes.</li><li>Use client-side (i.e., JavaScript) form validation. You absolute must also use server-side validation (for security purposes) but using client-side validation gives the user immediate feedback, without having to send the page to the server.</li><li>Use the fieldset and legend tags to distinguish the form from the rest of the page. I really like these tags and also feel they are underused. Multiple fieldset and legend tags can be used to separate a longer form into its logical components. <a
href="http://www.larryullman.com/examples/better_html_forms.html" target="_blank">See the example for what these do to a form.</a></li><li>Place a submit button at the top and button of a long form. I&#8217;m not completely sold on this one but thought I&#8217;d mention it as <a
href="http://www.robhuddleston.com">Rob Huddleston</a> advocated it in his presentation. The argument for it is that user&#8217;s often go back up to a page or may like having it there if they have to correct a couple of quick things. The argument against it is that it may encourage the user to submit the form prematurely (i.e., before they&#8217;ve scrolled down and seen the rest of the form).</li><li>Use the label tag for all inputs. This is an accessibility issue, plus using a label brings up some nice features in the Web browers. For example, most browsers will bring focus to a form element if you click on its label. Labels can be written in a couple of ways, but here&#8217;s one recommendation:</li><p><code>&lt;label for="something"&gt; Something &lt;/label&gt; &lt;input type="text" id="something" name="something" /&gt;</code></ul><p><strong>An HTML form should not&#8230;</strong></p><ul><li>Request information you have no intention of using or needing. <a
href="http://www.robhuddleston.com">Rob Huddleston</a> pointed out, as a common example, that e-commerce sites don&#8217;t really need to ask the credit card type, as the number itself indicates the type.</li><li>Use tables. Tables are pretty outdated by now and should be used sparingly, if at all (CSS should be used instead). Besides the aesthetic and standards issues with tables, they break up forms poorly and can interfere with the use of label tags.</li><li>Contain reset buttons. This is one I learned ten years ago that&#8217;s really stuck with me. And yet, lots of forms still have reset buttons. The argument against reset buttons is that the user may inadvertently click it instead of submit, thereby destroying all of their efforts. And how often do users actually need to reset a form? Never? Almost never? More likely a user would either reload the page if they want to start from scratch (which I just don&#8217;t think they ever need to do) or go to another page if they decide not to submit the form. Really: best not to use reset buttons at all.</li></ul><p>Rob Huddleston also recommended the books <a
href="http://click.linksynergy.com/fs-bin/click?id=*Bm0DIfkEko&amp;offerid=145244.378526&amp;type=2&amp;subid=0">Don&#8217;t Make Me Think</a><img
src="http://ad.linksynergy.com/fs-bin/show?id=*Bm0DIfkEko&amp;bids=145244.378526&amp;type=2&amp;subid=0" border="0" alt="" width="1" height="1" /> by Steve Krug and <a
href="http://click.linksynergy.com/fs-bin/click?id=*Bm0DIfkEko&amp;offerid=145244.448536&amp;type=2&amp;subid=0">Designing with Web Standards</a><img
src="http://ad.linksynergy.com/fs-bin/show?id=*Bm0DIfkEko&amp;bids=145244.448536&amp;type=2&amp;subid=0" border="0" alt="" width="1" height="1" /> by Jeffrey Zeldman. I haven&#8217;t read either yet myself, although both are on my wish lists. I think it&#8217;s safe to say that both are considered standard books on the subjects.</p><p>I&#8217;ll be posting more on HTML forms in this blog, and you may also want to check out my post on <a
href="http://www.larryullman.com/2008/12/09/are-you-down-with-poka-yoke/">poka-yoke</a>. When I get the chance, I&#8217;ll try to add some CSS suggestions for making forms look even nicer.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2008/12/14/better-html-forms/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Are you down with Poka-yoke?</title><link>http://www.larryullman.com/2008/12/09/are-you-down-with-poka-yoke/</link> <comments>http://www.larryullman.com/2008/12/09/are-you-down-with-poka-yoke/#comments</comments> <pubDate>Wed, 10 Dec 2008 02:27:12 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[error]]></category> <category><![CDATA[html forms]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=37</guid> <description><![CDATA[One of the sessions I attended at the 2008 Adobe MAX conference in San Francisco was Web Application Development: The Error of Our Ways, presented by Robert Hoekman, Jr.. I went to this session in particular as part of my current drive to improve my user interface (UI) and Web accessibility skills. In the session, [...]]]></description> <content:encoded><![CDATA[<p>One of the sessions I attended at the 2008 Adobe MAX conference in San Francisco was <em>Web Application Development: The Error of Our Ways</em>, presented by <a
href="http://www.rhjr.net">Robert Hoekman, Jr.</a>. I went to this session in particular as part of my current drive to improve my <a
href="http://www.larryullman.com/2008/12/06/user-interface/">user interface (UI)</a> and Web accessibility skills. In the session, Hoekman mentioned the concept of <em>poka-yoke</em>, a Japanese term that means fool-proofing or mistake-proofing (<a
href="http://en.wikipedia.org/wiki/Poka-yoke">see the Wikipedia entry</a>).<span
id="more-37"></span></p><p>The thinking behind poka-yoke is that a thing&#8211;software, hardware, whatever&#8211;shapes the user&#8217;s behavior in order to prevent or limit mistakes. An example that Wikipedia gives is how the key in an automatic transmission car cannot be removed unless the car is in park: the car tries to prevent you from leaving it in an unsafe state.</p><p>As Hoekman said in his presentation, we <em>should</em> be designing Web sites and software using poka-yoke, but often the design and interface of our creations <em>encourages</em> users to make mistakes. Or practically forces them to. For example, if you want a date in a specific format, you could indicate the format required. But a better solution would be to use a pop-up calendar widget where the user selects a date, that then formats that date properly. Even better, program your system so it accepts a date in multiple different formats in case the user doesn&#8217;t use the calendar widget. This last notion is part of a general theory of providing alternatives to your users, not trying to lock them into using your site in one set way (again, this is coming from Hoekman).</p><p>For more information on this subject, you should check out Hoekman&#8217;s <a
href="http://www.rhjr.net">site</a> and his books. I&#8217;ve not read them myself, but have added them to my ever-growing list of books that I intend to read someday. His first is <a
href="http://click.linksynergy.com/fs-bin/click?id=*Bm0DIfkEko&#038;offerid=145244.463458&#038;type=2&#038;subid=0" >Designing the Obvious: A Common Sense Approach to Web Application Design</a><img
border=0 width=1 height=1 src="http://ad.linksynergy.com/fs-bin/show?id=*Bm0DIfkEko&#038;bids=145244.463458&#038;type=2&#038;subid=0" />. His most recent is <a
href="http://www.amazon.com/gp/product/0321535081?ie=UTF8&#038;tag=dmcinsiinc-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321535081">Designing the Moment: Web Interface Design Concepts in Action</a><img
src="http://www.assoc-amazon.com/e/ir?t=dmcinsiinc-20&#038;l=as2&#038;o=1&#038;a=0321535081" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2008/12/09/are-you-down-with-poka-yoke/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Final Steps Before Taking a Site Live</title><link>http://www.larryullman.com/2008/12/07/final-steps-before-taking-a-site-live/</link> <comments>http://www.larryullman.com/2008/12/07/final-steps-before-taking-a-site-live/#comments</comments> <pubDate>Mon, 08 Dec 2008 03:31:51 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[html forms]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=25</guid> <description><![CDATA[A reader named Max posted a suggestion in my book forums that I include a checklist of final steps to take before a Web site goes live (read his post). I don&#8217;t know if it&#8217;ll make it into a book but it&#8217;s a good idea so I thought I&#8217;d give it its due here. In [...]]]></description> <content:encoded><![CDATA[<p>A reader named Max posted a suggestion in my book forums that I include a checklist of final steps to take before a Web site goes live (<a
href="http://www.larryullman.com/forum/read.php?19,39999">read his post</a>). I don&#8217;t know if it&#8217;ll make it into a book but it&#8217;s a good idea so I thought I&#8217;d give it its due here. In this first post I&#8217;ll discuss general steps to take, regardless of the technologies being used. In a separate post, I&#8217;ll discuss PHP and MySQL specific steps; later, I&#8217;ll post for a Ruby on a Rails site.</p><p>Once you&#8217;ve finalized all the functionality and appearance of a site (or thought you have, at least), you should&#8230;<span
id="more-25"></span><strong>Confirm that all links work.</strong> You can use automated software that will spider through your site and report any dead links. Using one of these applications, and there are free ones available, is really simple and definitely worth your minimal effort.</p><p><strong>Validate all HTML.</strong> Use an online HTML validation system to confirm that there are no syntactical problems on any page. This should include pages that are the result of form submissions, with and without errors, etc. Any page that a user may see in any state should be validated!</p><p><strong>Test! Test! Test!</strong> You&#8217;ve already tested your site, right? Lots of times? Have your spouse or significant other or parent or roommate or whomever test it. Have someone less technically skilled than you test it. Retest it yourself, this time with the approach of &#8220;What happens if I do this?&#8221;, even if what you attempt is something you&#8217;d never think anyone would ever try.</p><p><strong>Test in multiple browsers on multiple platforms.</strong> You don&#8217;t have to take all of these steps using multiple browsers on multiple platforms, but you should at least hit some of the key pages so you know that everything looks right. Also keep in mind that IE 6 behaves differently than IE 7 or Firefox 2 vs. Firefox 3. Just testing in the latest version of one browser is not sufficient. To simplify things, consider using a site like <a
href="http://browsershots.org/">BrowserShots.org</a>.</p><p><strong>Try to hack your site.</strong> Make sure you&#8217;ve applied good security measures by doing very, very bad things and making sure nothing horrendous happens.</p><p><strong>Have a good &#8220;Page Not Found&#8221; page.</strong> Although it&#8217;s best not to have dead links on your site, a truly professional site has a nice &#8220;Page Not Found&#8221; page that handles any missing pages. It should look like the rest of your site, provide a helpful message as to what happened (i.e., why they&#8217;re seeing that page), and provide navigation to the site&#8217;s actual pages.</p><p>Well, that&#8217;s the list I have at the top of my head. I&#8217;m sure you have other suggestions and I&#8217;d love to hear them!</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2008/12/07/final-steps-before-taking-a-site-live/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>User Interface</title><link>http://www.larryullman.com/2008/12/06/user-interface/</link> <comments>http://www.larryullman.com/2008/12/06/user-interface/#comments</comments> <pubDate>Sat, 06 Dec 2008 17:40:58 +0000</pubDate> <dc:creator>Larry</dc:creator> <category><![CDATA[Web Development]]></category> <category><![CDATA[client]]></category> <category><![CDATA[ui]]></category> <category><![CDATA[user interface]]></category><guid
isPermaLink="false">http://www.larryullman.com/?p=16</guid> <description><![CDATA[The start of my current so-called sabbatical has ended up focusing on user interface. While at the 2008 Adobe MAX conference in San Francisco I attended a couple of sessions on the topic, or on related ones. I&#8217;ll post some thoughts and notes from those sessions soon. I also took with me to San Francisco [...]]]></description> <content:encoded><![CDATA[<p>The start of <a
href="http://www.larryullman.com/2008/11/30/my-sabbatical/">my current so-called sabbatical</a> has ended up focusing on user interface. While at the 2008 Adobe MAX conference in San Francisco I attended a couple of sessions on the topic, or on related ones. I&#8217;ll post some thoughts and notes from those sessions soon. I also took with me to San Francisco the book <a
href="http://www.amazon.com/gp/product/073571410X?ie=UTF8&#038;tag=dmcinsiinc-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=073571410X">Defensive Design for the Web: How to improve error messages, help, forms, and other crisis points</a><img
src="http://www.assoc-amazon.com/e/ir?t=dmcinsiinc-20&#038;l=as2&#038;o=1&#038;a=073571410X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, by <a
href="http://www.37signals.com/">37signals</a>. If you&#8217;re not familiar with <a
href="http://www.37signals.com/">37signals</a>, you ought to check them out. They&#8217;re a Web development company based in Chicago and they&#8217;re best known for creating the Ruby on Rails framework. <a
href="http://www.37signals.com/">37signals</a> also wrote a book called <em>Getting Real</em>, which discusses best practices for developing software (which applies to Web sites as well). You can <a
href="http://gettingreal.37signals.com/">buy the book through their Web site</a> or <a
href="http://gettingreal.37signals.com/toc.php">read it online at their site for free</a>.</p><p>Anyway, as a person that develops Web sites for a living (or part of my living, at least), I&#8217;m sometimes terribly annoyed when I find a site that doesn&#8217;t work or make sense. As a person that likes to think he knows what he&#8217;s doing when it comes to Web sites, if I can&#8217;t figure out something, I can&#8217;t imagine that the less knowledgeable person could. I think getting UI right is hard for people as it can be difficult imagining how others might use the software or site you&#8217;ve developed. I&#8217;ll provide more specific recommendations on this subject soon, but I wanted to mention this as a recent area of interest now just so you know what to expect in the next couple of weeks in this blog.</p><p>One particular idea I&#8217;ll throw out here was presented at one of the Adobe MAX sessions I attended. That speaker talked about how you should be &#8220;an ambassador for the end user&#8221;, which is a nice phrase and a good reminder. He also pointed out that while you&#8217;re developing software or a Web site for a client, they often won&#8217;t be the ones interfacing with your creation. So as a Web developer, you need to hit the mark between giving the client what they think they want and giving the end user what they really need.</p> ]]></content:encoded> <wfw:commentRss>http://www.larryullman.com/2008/12/06/user-interface/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: www.larryullman.com @ 2012-05-21 15:42:12 by W3 Total Cache -->
