<?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>Pixel Acres &#187; News &amp; Reviews</title>
	<atom:link href="http://f6design.com/journal/category/news-reviews/feed/" rel="self" type="application/rss+xml" />
	<link>http://f6design.com/journal</link>
	<description>Adventures in web and graphic design</description>
	<lastBuildDate>Wed, 16 May 2012 06:50:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Test your JavaScript skills with js-assessment</title>
		<link>http://f6design.com/journal/2012/04/15/test-your-javascript-skills-with-js-assessment/</link>
		<comments>http://f6design.com/journal/2012/04/15/test-your-javascript-skills-with-js-assessment/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 09:47:52 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[News & Reviews]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=2365</guid>
		<description><![CDATA[I recently discovered js-assessment, a &#8220;test-driven approach to assessing JavaScript skills&#8221; created by Rebecca Murphey. The js-assessment application contains a series of tests designed to assess a job candidate&#8217;s grasp of JavaScript, but it can also be used to gauge your own knowledge of the language. Think of it as a mini Project Euler for [...]]]></description>
			<content:encoded><![CDATA[<p>I recently discovered <a href="https://github.com/rmurphey/js-assessment">js-assessment</a>, a &#8220;test-driven approach to assessing JavaScript skills&#8221; created by <a href="http://rmurphey.com/">Rebecca Murphey</a>. The js-assessment application contains a series of tests designed to assess a job candidate&#8217;s grasp of JavaScript, but it can also be used to gauge your own knowledge of the language. Think of it as a mini <a href="http://projecteuler.net/">Project Euler</a> for JavaScript.</p>
<p>The questions are divided into five topics covering different aspects of the language: arrays, objects and context, functions, asynchronous behavior and <a href="http://documentcloud.github.com/backbone/">Backbone</a> views. If, like me, you have a decent grasp of JavaScript, but wouldn&#8217;t feel confident writing &#8220;JavaScript programmer&#8221; on your curriculum vitae, then I think you&#8217;ll find the tests an enjoyable challenge. None of the questions are super difficult, though I confess to needing help from <a href="https://developer.mozilla.org/en-US/">MDN</a> to arrive at a few of the solutions. I definitely learned a thing or two about JavaScript along the way.</p>
<p>Because Rebecca&#8217;s application is built in Node, you&#8217;ll need to have <a href="http://nodejs.org">Node</a> and <a href="http://npmjs.org/">NPM</a> installed before you can run it. That&#8217;s a shortcoming I think, since it throws up a fairly large barrier-to-entry, but if you&#8217;re serious about JavaScript then you really ought to delve into Node anyway. I won&#8217;t bore you with instructions for installing Node &#8211; you can do it using <a href="http://mxcl.github.com/homebrew/">Homebrew</a> or download an installer from the official <a href="http://nodejs.org/#download">Node website</a>. After that, just follow the steps on the <a href="https://github.com/rmurphey/js-assessment">js-assessment github</a> and you&#8217;ll be up and running.</p>
<p>Rebecca seems undecided about whether to publish solutions to the tests, but in the name of sharing the knowledge (and at the risk of exposing my own shortcomings as a programmer), you&#8217;ll find my answers below. My solutions won&#8217;t make much sense taken out of context like this, but once your start working your way through js-assessment things will become a lot clearer.</p>
<p>Although my solutions pass Rebecca&#8217;s tests I&#8217;m sure some of them could be improved, so if you have suggestions for optimizing my code please leave a comment below.</p>
<h2>Arrays</h2>
<h4>1. You should be able to determine the location of an item in an array</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (arr, targ) {
  for (var pos=0; pos &lt; arr.length; pos++){
    if (arr[pos] == targ){
      return pos;
    }
  }
};</pre>
<h4>2. You should be able to add the values of an array</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (arr) {
  var total = 0;
  for (var pos=0; pos &lt; arr.length; pos++) {
    total += arr[pos];
  }
  return total;
};</pre>
<h4>3. You should be able to remove an item from an array</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (arr, itemToRemove) {
  for (var pos=0; pos &lt; arr.length; pos++){
    if (arr[pos] == itemToRemove){
      var removedItem = arr.splice(pos,1);
    }
  }
  return arr;
};</pre>
<h4>4. You should be able to add an item to the end of an array</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (arr, itemToAdd) {
  arr.push(itemToAdd);
  return arr;
};</pre>
<h4>5. You should be able to create an array from two arrays</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (arr1, arr2) {
  var arr = arr1.concat(arr2);
  return arr;
};</pre>
<h4>6. You should be able to add an item anywhere in an array</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (arr, itemToAdd, pos) {
  arr.splice(pos, 0, itemToAdd);
  return arr;
};</pre>
<h2>Objects and context</h2>
<h4>1. You should be able to alter the context in which a method runs</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function () {
  // Call the sayIt() function and pass it the
  // 'b' object as its context.
  return a.sayIt.call(b);
};</pre>
<h4>2. You should be able to alter multiple objects at once</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (greeting) {
  C.prototype.greeting = greeting;
};</pre>
<h4>3. You should be able to iterate over an object&#8217;s &#8216;own&#8217; properties</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (obj) {
  var ownProperties = [];
  for (var prop in obj) {
    // hasOwnProperty returns true if the property
    // belongs to the object, not its prototype chain.
    if (obj.hasOwnProperty(prop)) {
      ownProperties.push(prop + ': ' + obj[prop]);
    }
  }
  return ownProperties;
};</pre>
<h2>Functions</h2>
<h4>1. You should be able to use an array as arguments when calling a function</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (opts) {
  // Call the sayIt() function in the context of 'this'
  // and pass it the 'opts' array.
  return sayIt.apply(this, opts);
};</pre>
<h4>2. You should be able to change the context in which a function is called</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (opts){
  // Call the speak() function in the context of 'obj'.
  return speak.call(obj);
};</pre>
<h4>3. You should be able to return a function from a function</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (prefix) {
  var concatFn = function(suffix) {
    return prefix + ', ' + suffix;
  };
  return concatFn;
};</pre>
<h4>4. You should be able to create a &#8216;partial&#8217; function</h4>
<pre class="brush: jscript; title: ; notranslate">fn = function (func, greeting, name) {
  var partialFn = function(punctuation) {
    return func(greeting, name, punctuation);
  };
  return partialFn;
};</pre>
<h2>Async behavior</h2>
<h4>1. You should understand how to uses &#8216;promises&#8217;</h4>
<p>As far as I know promises are not part of the JavaScript language, and need to be implemented using a third party library. In my solution I used jQuery&#8217;s <a href="http://api.jquery.com/deferred.promise/">deferred object</a> to return a promise.</p>
<pre class="brush: jscript; title: ; notranslate">fn = function () {
  // This is a contrived example to demonstrate that the promise
  // is returned asynchronously after a 1sec timeout.
  var dfd = $.Deferred();
  var timeoutID = window.setTimeout(function(){
    dfd.resolve(true);
  }, 1000);
  return dfd.promise();
};</pre>
<h4>2. You should be able to receive data from the server and manipulate it</h4>
<pre class="brush: jscript; title: ; notranslate">var get = $.ajax({
  url: url
});

// Since jQuery's $.ajax returns a promise, we can use
// .done and .fail callbacks.
get.done(function(response){
  peopleArray = [];
    for (var person in response.people){
      peopleArray.push(response.people[person].name);
    }
    peopleArray.sort(); // Not required in this case.
    tests();
});

get.fail(function(){
  console.log('Load failed');
});</pre>
<h2>Backbone views</h2>
<p>This section of the test relies on knowledge of the <a href="http://documentcloud.github.com/backbone/">Backbone</a> framework. Personally that doesn&#8217;t bother me since I have used Backbone before, but I&#8217;m not sure that Backbone knowledge should be considered mandatory for a JavaScript professional.</p>
<h4>1. You should be able to render a view using a template</h4>
<pre class="brush: jscript; title: ; notranslate">var MyView = Backbone.View.extend({
  template : tpl,
  render : function() {
    // This could be written on a single line, but I've
    // split across 3 lines for readability:
    var compiledTemplate = _.template(this.template);
    var viewHTML = compiledTemplate(this.model.toJSON());
    $('body').append(viewHTML);
  }
});</pre>
<h4>2. You should be able to update the view when the model changes</h4>
<pre class="brush: jscript; title: ; notranslate">var MyView = Backbone.View.extend({
  initialize : function() {
    this.model.bind('change:greeting', this.render, this);
    this.model.set({greeting: 'Goodbye, world'});
  },
  template : tpl,
  render : function() {
    $('#my-view').html(this.model.get('greeting'));
  }
});</pre>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2012/04/15/test-your-javascript-skills-with-js-assessment/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Book Review: Dig Deal</title>
		<link>http://f6design.com/journal/2011/08/05/book-review-dig-deal/</link>
		<comments>http://f6design.com/journal/2011/08/05/book-review-dig-deal/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 05:36:01 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[News & Reviews]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=2090</guid>
		<description><![CDATA[Robert Hoekman, Jr is a user experience designer and consultant who is best known for his books about interface design, Designing the Obvious and Designing the Moment. His self-published book Big Deal: On Being Famous to Almost No One tackles a far more personal subject. In Big Deal Hoekman, Jr recounts his rise to the [...]]]></description>
			<content:encoded><![CDATA[<div class="align-right border"><img src="http://f6design.com/journal/wp-content/uploads/2011/08/big-deal-218w.png" alt="Big Deal book cover"  width="218" height="309" class="contentImg" /></div>
<p><a href="http://rhjr.net/">Robert Hoekman, Jr</a> is a user experience designer and consultant who is best known for his books about interface design, <a href="http://www.amazon.com/Designing-Obvious-Common-Approach-Application/dp/032145345X"><i>Designing the Obvious</i></a> and <a href="http://www.amazon.com/Designing-Moment-Interface-Design-Concepts/dp/0321535081"><i>Designing the Moment</i></a>. His self-published book <a href="http://www.goodreads.com/book/show/12254276-big-deal"><i>Big Deal: On Being Famous to Almost No One</i></a> tackles a far more personal subject. In <i>Big Deal</i> Hoekman, Jr recounts his rise to the top of the web design field, and describes how his craving for professional notoriety eventually devastated his personal friendships, marriage, and sense of self worth.</p>
<p>The form of celebrity Hoekman Jr discusses in <i>Big Deal</i> has been dubbed &#8220;micro-fame&#8221;:</p>
<blockquote><p>My name is Robert Hoekman, Jr, and in certain rooms, under certain circumstances, at certain moments, surrounded by certain people, and when all these very certain things come together, I am a big fucking deal.</p></blockquote>
<p>In other words, Hoekman, Jr might be unknown to the general public, but within the web design industry he is a bona fide rock star.</p>
<p>From the unique perspective that this notoriety affords, he takes the reader on a whirlwind tour of the conference rooms, hotel bars, book signings, photo opportunities and corporate retreats that consumed his attention as he rose the ranks of his profession. Along the way we rub shoulders with a veritable who&#8217;s who of the web industry: Matt Mullenweg, Jeff Veen, Jeffrey Zeldman, Caterina Fake, Luke Wroblewski, to name but a few.</p>
<p>Ultimately Hoekman, Jr&#8217;s craving for recognition and approval forces a crisis in his professional and personal life, and he has to face up to the root causes of his obsession with fame, and deal with the fallout.</p>
<p>This makes for fascinating reading, especially for a web design nerd such as myself, but I was left with the nagging feeling that Hoekman, Jr has &#8211; perhaps unwittingly &#8211; used his book about the pitfalls of fame as a platform to reinforce his cool kid credentials.</p>
<p>The nonstop cataloging of his professional achievements came across at times like bragging, and I wish he had dialed the self promotion back a notch. Even in the book&#8217;s later chapters, where he describes a dawning awareness that his obsession with fame is destroying his marriage, the laundry list of book signings and speaking engagements barely slows down. It is as if he wants to remind the reader that even though he no longer <em>cares</em> about being famous, he still <em>is</em> famous. </p>
<p>It is said that that pride comes before a fall, and in <i>Big Deal</i> Hoekman, Jr talks candidly about the flipside of his micro-fame: spiraling self doubt, professional rejection by Apple and Yahoo, isolation from friends, and the collapse of his marriage. It takes guts for a writer to expose their weaknesses so openly, but it feels a little like sitting in on someone else&#8217;s therapy session (in a psychotherapy cliché he lays much of the blame for his low self esteem at the feet of his mother). I imagine the process of writing <i>Big Deal</i> was extremely cathartic, but I question whether the experience of reading the book is  equally enlightening. </p>
<p>The problem is that <i>Big Deal</i> is all about Hoekman, Jr, and frankly I&#8217;m not sure that his personal experiences provide enough material to do the book&#8217;s topic justice. If more of <i>Big Deal</i> had been devoted to examining the impact of micro-fame in a broader context &#8211; the cult of celebrity engendered by social networking services like Twitter, say &#8211; the book might be better rounded, and have a broader appeal.</p>
<p>Despite the reservations I have outlined above, I still found <i>Big Deal</i> very enjoyable. There is no doubt that Hoekman, Jr is a talented writer, and has penned a book that can accurately be described as a page turner. I finished the book in one day, and certainly wasn&#8217;t left unsatisfied. Hoekman, Jr paints a very human picture of his life as a web industry A-Lister, and in a field where technical manuals are the norm <i>Big Deal</i> is quite unlike any other web design book I have read.</p>
<p><i>Big Deal: On Being Famous to Almost No One</i> will be released as an ebook through Amazon and iBooks later this year. <a href="http://rhjr.tumblr.com/post/5173363304/big-deal-on-being-famous-to-almost-no-one">Learn more about the book</a> on Robert Hoekman, Jr&#8217;s website.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2011/08/05/book-review-dig-deal/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Thinking Web, a free ebook from Sitepoint</title>
		<link>http://f6design.com/journal/2011/06/06/thinking-web-a-free-ebook-from-sitepoint/</link>
		<comments>http://f6design.com/journal/2011/06/06/thinking-web-a-free-ebook-from-sitepoint/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 06:35:35 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[News & Reviews]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=1921</guid>
		<description><![CDATA[Sitepoint have just announced the release of a free ebook, Thinking Web: Voices of the Community. The book is a collaborative effort designed to tap the wealth of knowledge that can be found in the Sitepoint forums. The book is over 200 pages in length, and covers a whole gamut of topics including web accessibility, [...]]]></description>
			<content:encoded><![CDATA[<p>Sitepoint have just announced the release of a free ebook, <a href="http://blogs.sitepoint.com/thinking-web-voices-of-the-community/"><em>Thinking Web: Voices of the Community</em></a>. The book is a collaborative effort designed to tap the wealth of knowledge that can be found in the Sitepoint forums.</p>
<p>The book is over 200 pages in length, and covers a whole gamut of topics including web accessibility, coding HTML emails, database basics, online marketing, and going freelance.</p>
<p><a href="http://www.sitepoint.com/bookstore/go/284/">Get the book for free</a> from the Sitepoint store.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2011/06/06/thinking-web-a-free-ebook-from-sitepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Volume</title>
		<link>http://f6design.com/journal/2011/05/24/book-review-volume/</link>
		<comments>http://f6design.com/journal/2011/05/24/book-review-volume/#comments</comments>
		<pubDate>Tue, 24 May 2011 11:26:44 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[News & Reviews]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=1394</guid>
		<description><![CDATA[While I was twiddling my thumbs waiting for my last Amazon shipment to arrive I asked my studio mate if he had any design theory books I could borrow. &#8220;Aha! I&#8217;ve got just the thing&#8221;, he said (or words to that effect) and plucked a copy of Kenneth Fitzgerald&#8217;s Volume from his bookshelf. The author&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://f6design.com/journal/wp-content/uploads/2011/05/frontcover_volume_218w.jpg" alt="Volume book cover" width="218" height="331" class="contentImg align-right" /></p>
<p>While I was twiddling my thumbs waiting for my last Amazon shipment to arrive I asked my studio mate if he had any design theory books I could borrow. &#8220;Aha! I&#8217;ve got just the thing&#8221;, he said (or words to that effect) and plucked a copy of Kenneth Fitzgerald&#8217;s <a href="http://www.ephemeralstates.com/volume/"><em>Volume</em></a> from his bookshelf. The author&#8217;s name didn&#8217;t ring any bells, but the book&#8217;s back cover promised a survey of &#8220;the discipline of graphic design in context with the parallel creative fields of contemporary music and art&#8221;. Since I love graphic design, music <em>and</em> art, I figured I was on to a good thing.</p>
<p>Kenneth Fitzgerald is an Associate Professor of Art at Old Dominion University in Norfolk, Virginia, and has previously written for <em>Emigre</em>, <em>The AIGA Journal of Desig</em>n, and <em>Eye</em>. Many of the essays collected in <em>Volume</em> first saw print in the pages of one of those publications, though all but one were new to me. Thankfully the vintage of the older articles has done little to dull their impact, and even the essays written in the 1990s seem topical today.</p>
<p>In his writing Fitzgerald explores the connections between graphic design and other cultural forms, particularly music and art, and many of <em>Volume&#8217;s</em> essays make the case for a more inclusive understanding of graphic design&#8217;s place in the world. I worked in art galleries for several years before becoming a graphic designer, and I found Fitzgerald&#8217;s no-nonsense critiques of the art world to be right on the money.</p>
<p>Fitzgerald takes a similarly unsentimental view of the design profession, and is unswayed by the star power that is frequently attached to its high achievers. In <em>Volume</em> he exposes the class system that operates largely unchallenged in the design sector, and the role that money, privilege and celebrity play in shaping the field. In the process several of graphic design&#8217;s sacred cows are roasted &#8211; Stefan Sagmeister and Paul Rand are both singled out &#8211; which makes for entertaining reading.</p>
<p>Another theme he returns to frequently is the profession&#8217;s preoccupation with formalism and suspicion of critical theory. This sometimes comes across as self-referential &#8211; design theory about design theory &#8211; but that doesn&#8217;t detract from the relevance Fitzgerald&#8217;s ideas hold for designers working &#8220;in the trenches&#8221;, and he clearly sees the need to break down the barriers that separate design critics and practitioners.</p>
<p>It&#8217;s not all good though. Sometimes Fitzgerald repeats himself, treading the same ground in different essays, and he seems more adept at pointing out problems with the state of design than he is at proposing solutions. But those are minor quibbles about an otherwise very enjoyable collection.</p>
<p>If you&#8217;re tired of reading puff pieces about celebrity graphic designers and want to sink your teeth into something that will challenge your mind rather than your eyeballs, <em>Volume</em> may be just what the doctor ordered.</p>
<p>You can read more of Kenneth Fitzgerald&#8217;s writing on his website, <a href="http://www.ephemeralstates.com/">Ephermeral States</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2011/05/24/book-review-volume/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Book Review: The Design of Everyday Things</title>
		<link>http://f6design.com/journal/2011/05/14/book-review-the-design-of-everyday-things/</link>
		<comments>http://f6design.com/journal/2011/05/14/book-review-the-design-of-everyday-things/#comments</comments>
		<pubDate>Sat, 14 May 2011 10:27:55 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[News & Reviews]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=1554</guid>
		<description><![CDATA[Donald A. Norman&#8217;s The Design of Everyday Things frequently pops up on lists of &#8220;must read&#8221; design books, but I&#8217;ve somehow managed to avoid reading it until now. I finally included the book in my last Amazon order, and now I wish I hadn&#8217;t waited so long to get my hands on a copy, because [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://f6design.com/journal/wp-content/uploads/2011/05/everydaythings_220w.jpg" alt="The Design of Everyday Things cover" width="220" height="337" class="align-right" /></p>
<p>Donald A. Norman&#8217;s <a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/"><em>The Design of Everyday Things</em></a> frequently pops up on lists of &#8220;must read&#8221; design books, but I&#8217;ve somehow managed to avoid reading it until now. I finally included the book in my last Amazon order, and now I wish I hadn&#8217;t waited so long to get my hands on a copy, because it really is a classic that deserves all the praise that&#8217;s been heaped on it.</p>
<p><em>The Design of Everyday Things</em> was first published in 1988 under the title <em>The Psychology of Everyday Things</em>, and is aimed at anyone involved in the design process, regardless of which field they work in. Norman&#8217;s background is in cognitive science, and in the book he explores the psychology of everyday objects, making a persuasive argument for the importance of a user-centered approach to design. After reading <em>The Design of Everyday Things</em> you will never look at a tap, light switch, stove top, or telephone the same way again (and I guarantee you&#8217;ll learn a thing or two about the layout of your computer keyboard!)</p>
<p>A big part of what makes <em>The Design of Everyday Things</em> so enjoyable are the descriptions of flawed designs that Norman peppers throughout the book. These case studies serve to illustrate both how difficult it is to design something well, and how essential good design is to our lives. Norman draws on his own (often humorous) experiences with poorly designed objects, as well as anecdotes from colleagues and friends, and paints an all-too-familiar picture of design gone awry. If you&#8217;ve ever struggled to program a VCR, pulled a door handle when you were supposed to push, or been mystified by the taps in a public restroom, then you&#8217;ll be sure to relate to these encounters with bad design. Norman uses the book&#8217;s examples of substandard design as a springboard for examining the factors that frequently derail the design process, and he proposes that matters can be improved when designers adopt a user-centered design philosophy and focus on the needs of the user.</p>
<p>While <em>The Design of Everyday Things</em> deals mostly with the design of physical objects, its principles are equally applicable to the design of websites and other interactive systems. Consider this description of the relationship between the number of visible controls a device has and how difficult it is to use, which has obvious implications for the design of web applications and navigation systems:</p>
<blockquote><p>We found that to make something easy to use, match the number of controls to the number of functions and organize the panels according to function. To make something look like it is easy, minimize the number of controls. How can these conflicting requirements be met simultaneously? Hide the controls not being used at the moment. By using a panel on which only the relevant controls are visible, you minimize the appearance of complexity. By having a separate control for each function, you minimize complexity of use. It is possible to eat your cake and have it, too.</p></blockquote>
<p>Norman devotes a portion of a chapter called The Design Challenge to the discussion of computers, and while the technology he describes sounds antiquated to a modern audience &#8211; he has to explain to the reader what a computer mouse is &#8211; the interface design concepts he discusses still hold true today. Interestingly he singles out the Apple Macintosh, which had only been in the market a few of years at the time of the book&#8217;s publication, as an example of outstanding computer design and usability. His only complaint: the single button mouse. Over twenty years later Apple still set the benchmark for good design in the computer industry, and <em>still </em>draw criticism for the design of their mice!</p>
<p>Given that the book was written in the 1980s, and devotes a lot of space to discussing technologies that seem antiquated today, I was surprised just how easily its principles can be applied in a contemporary context. It is a testament to the timelessness of Norman&#8217;s ideas that many of the predictions he made about technology have proven to be very accurate. In a chapter on the function of reminders and human memory he speculates about the future of computer devices:</p>
<blockquote><p>Would you like a pocket sized device that reminded you of each appointment and daily event? I am waiting for the day when portable computers become small enough that I can keep one with me at all times [...] It has to have a full, standard typewriter keyboard and a reasonably large display [...] And it should be easy to hook up to the telephone.</p></blockquote>
<p>Writing in 1988 Norman wasn&#8217;t able to guess that the computer and the phone would one day merge, but in other respects he was describing the modern smartphone. It&#8217;s that kind of insight that makes this book so valuable. </p>
<p>Whether you design consumer goods, electronics, software, websites, technical documentation &#8211; anything, really &#8211; you&#8217;re bound to look at your craft in a new light after reading <em>The Design of Everyday Things</em>. This is surely a book that deserves a place on every designer&#8217;s bookshelf.</p>
<h3>Stay tuned for more reviews</h3>
<p>At the start of the year I resolved to read more design and development related books, so I&#8217;ll be posting more book reviews here as I check each title off my reading list. If you want to see reviews and ratings for other books in my collection, check out my <a href="http://www.goodreads.com/jnicol">Goodreads profile</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2011/05/14/book-review-the-design-of-everyday-things/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Worldview: real-time Campaign Monitor metrics</title>
		<link>http://f6design.com/journal/2011/03/30/worldview-real-time-campaign-monitor-metrics/</link>
		<comments>http://f6design.com/journal/2011/03/30/worldview-real-time-campaign-monitor-metrics/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 05:20:07 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[News & Reviews]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=1230</guid>
		<description><![CDATA[For a number of years I have used Campaign Monitor to provide email marketing services to my clients, and I&#8217;ve always gotten a kick from seeing how subscribers interact with my client&#8217;s emails. When sending out a large campaign it is satisfying to watch the &#8216;views&#8217; and &#8216;clicks&#8217; metrics climb higher as subscribers open the [...]]]></description>
			<content:encoded><![CDATA[<p>For a number of years I have used <a href="http://www.campaignmonitor.com/">Campaign Monitor</a> to provide email marketing services to my clients, and I&#8217;ve always gotten a kick from seeing how subscribers interact with my client&#8217;s emails. When sending out a large campaign it is satisfying to watch the &#8216;views&#8217; and &#8216;clicks&#8217; metrics climb higher as subscribers open the email and click links within the newsletter.</p>
<p>I must not be the only person who enjoys these kind of real-time statistics, because Campaign Monitor have just launched a new reporting feature they call <a href="http://www.campaignmonitor.com/worldview/">Worldview</a>, which is designed to give instantaneous feedback about your subscribers.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2011/03/worldview.jpg" alt="Campaign Monitor Worldview" title="worldview" width="450" height="307" class="" /></p>
<p>Worldview plots your subscribers on a world map (driven by Google Maps, of course), dropping a new pin on the map each time someone opens your email, clicks a link in an email, or shares your campaign. </p>
<p>So there is no longer any need to repeatedly reload your Campaign Monitor reports to simulate real-time metrics, just sit back and watch the show&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2011/03/30/worldview-real-time-campaign-monitor-metrics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Give Frank Chimero&#8217;s book a kickstart</title>
		<link>http://f6design.com/journal/2011/02/01/give-frank-chimeros-book-a-kickstart/</link>
		<comments>http://f6design.com/journal/2011/02/01/give-frank-chimeros-book-a-kickstart/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 23:08:18 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[News & Reviews]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=1191</guid>
		<description><![CDATA[Graphic designer Frank Chimero is raising funding for a book called The Shape of Design via crowdsourcing service Kickstarter. In a little over 24 hours the project has raised almost $50,000 in pledges, well exceeding the $27,000 target. Wow. Check out the video of Frank&#8217;s lecture of the same title, given at the Build conference. [...]]]></description>
			<content:encoded><![CDATA[<p>Graphic designer <a href="http://frankchimero.com/">Frank Chimero</a> is <a href="http://www.kickstarter.com/projects/30453381/the-shape-of-design">raising funding</a> for a book called <em>The Shape of Design</em> via crowdsourcing service Kickstarter.</p>
<p>In a little over 24 hours the project has raised almost $50,000 in pledges, well exceeding the $27,000 target. Wow. </p>
<p>Check out the <a href="http://vimeo.com/17084347">video of Frank&#8217;s lecture</a> of the same title, given at the Build conference.</p>
<p><iframe src="http://player.vimeo.com/video/17084347?title=0&amp;byline=0&amp;portrait=0&amp;color=53A924" width="450" height="253" frameborder="0"></iframe></p>
<p>In his presentation Frank discusses graphic design in the context of history, philosophy and anthropology, and draws interesting conclusions regarding the purpose and function of design. Apparently <em>The Shape of Design</em> book will expand on the themes of the lecture, so it should be a goodie.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2011/02/01/give-frank-chimeros-book-a-kickstart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Font Squirrel&#8217;s @font-face kit generator</title>
		<link>http://f6design.com/journal/2009/10/18/font-squirrel-font-face-generator/</link>
		<comments>http://f6design.com/journal/2009/10/18/font-squirrel-font-face-generator/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 02:25:29 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[News & Reviews]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Typography]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=749</guid>
		<description><![CDATA[If you want to create your own @font-face kits, you absolutely must check out Font Squirrel&#8217;s new @font-face generator tool. All you have to do is upload a TrueType or OpenType format font, and the generator spits out a zip file containing: The original typeface for Safari and Firefox 3.5 A WOFF font for Firefox [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to create your own <code>@font-face</code> kits, you absolutely must check out Font Squirrel&#8217;s new <a href="http://www.fontsquirrel.com/fontface/generator"><code>@font-face</code> generator tool</a>. All you have to do is upload a TrueType or OpenType format font, and the generator spits out a zip file containing:</p>
<ul>
<li>The original typeface for Safari and Firefox 3.5</li>
<li>A WOFF font for Firefox 3.6+</li>
<li>An SVG font for Opera, Chrome, and iPhone</li>
<li>An EOT font for Internet Explorer</li>
<li>A sample HTML page</li>
<li>A sample CSS stylesheet</li>
</ul>
<p>The generator also features options to reduce file size by subsetting the font, cleanup font outlines, and auto-hint glyphs to improve rendering.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/10/font_squirrel_generator.jpg" alt="Font Squirrel Generator" title="Font Squirrel Generator"  width="450" height="550" class="" /></p>
<p>Sweet!</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/10/18/font-squirrel-font-face-generator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Email Standards Project&#8217;s message to Microsoft: Outlook&#8217;s broken &#8211; Let&#8217;s fix it.</title>
		<link>http://f6design.com/journal/2009/06/24/the-email-standards-projects-message-to-microsoft-outlooks-broken-lets-fix-it/</link>
		<comments>http://f6design.com/journal/2009/06/24/the-email-standards-projects-message-to-microsoft-outlooks-broken-lets-fix-it/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:30:18 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[HTML/XHTML]]></category>
		<category><![CDATA[News & Reviews]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=436</guid>
		<description><![CDATA[Microsoft have announced that Outlook 2010 will use the crippled Word rendering engine to display HTML emails (as does Outlook 2007). In response The Email Standards Project have launched a campaign to send a clear message to Microsoft: Outlook&#8217;s broken &#8211; Lets fix it. The campaign leveredges Twitter to rally the web design community around [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft have announced that Outlook 2010 will use the crippled Word rendering engine to display HTML emails (as does Outlook 2007). In response <a href="http://www.email-standards.org/">The Email Standards Project</a> have launched a <a href="http://fixoutlook.org/">campaign</a> to send a clear message to Microsoft: Outlook&#8217;s broken &#8211; Lets fix it.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/06/fixit.jpg" alt="fixit" title="fixit" width="450" height="363" class="contentImg matte" /></p>
<p>The campaign leveredges Twitter to rally the web design community around the issue, and a realtime mosaic of the tweets can be viewed at <a href="http://fixoutlook.org/">fixoutlook.org</a>. The site is worth a visit for this feature alone!</p>
<h3>Further reading</h3>
<p><a href="http://www.campaignmonitor.com/blog/post/2799/microsoft-to-ignore-web-standards-in-outlook-2010/">Microsoft to ignore web standards in Outlook 2010 &#8211; enough is enough</a></p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/06/24/the-email-standards-projects-message-to-microsoft-outlooks-broken-lets-fix-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Version targeting lessons from Flash</title>
		<link>http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/</link>
		<comments>http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 22:55:34 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News & Reviews]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[backwards compatibility]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[version targeting]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/</guid>
		<description><![CDATA[In my last post I outlined some of the problems that might arise from the proposed version targeting changes to Internet Explorer 8. My major concern was that by removing the motivation for web authors to update legacy sites, version targeting might hamper the adoption of modern web development techniques. During the week I have [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://f6design.com/journal/2008/02/01/breaking-the-web/">last post</a> I outlined some of the problems that might arise from the proposed version targeting changes to Internet Explorer 8. My major concern was that by removing the motivation for web authors to update legacy sites, version targeting might hamper the adoption of modern web development techniques. During the week I have given some more thought to this issue, and it occurred to me that in Adobe Flash we have a fantastic real-world test case from which we might learn if version targeting is a viable strategy for a web browser.</p>
<h3>Version targeting in Flash</h3>
<p>Version targeting in Flash works in much the same way as it will in Internet Explorer: each Flash movie contains embedded information telling the Flash Player which version of Flash it was created for, and the Flash Player itself contains multiple rendering engines to handle legacy content.</p>
<p>This approach to backwards compatibility has been a feature of the Flash Player since its earliest incarnations. The latest version, Flash Player 9, supports content produced for FLV (Flash video), SWF9, SWF8, SWF7, SWF6, SWF5, SWF4, SWF3, SWF2, and FutureSplash. That means that Flash content created in 1995 still renders perfectly in 2008. Flash developers can have a great deal of confidence that an application they create today will continue to work in the future without any need to revisit it*.</p>
<p>Why have Adobe worked so hard to ensure the Flash Player is compatible with legacy content? I think the answer lies in the commercial nature of Flash. Because Adobe relies for its livelihood on the continued patronage of website developers, they need to keep that customer base happy. Flash would never have gained traction if developers were forced to rework their legacy websites every time a new Flash Player version is released &#8211; I can&#8217;t imagine anyone paying $700 for software that generates code that breaks every eighteen months!</p>
<h3>Does backwards compatibility hamper progress?</h3>
<p>Let us consider my concerns about version targeting, and see if they have been borne out in Flash: Has backwards compatibility hampered progress in the Flash industry? Has it slowed adoption of the Flash Player? Has it stalled advances in Flash technology? I think the answer to these questions is &#8220;no&#8221;.</p>
<p>One metric we can use to gauge the rate at which advances in Flash are taking place is to look at <a href="http://www.adobe.com/devnet/logged_in/ehuang_flashplayer9.html">Flash Player adoption rates</a>. A fast adoption rate by end users is a sign that users are encountering Flash content targeting the latest Flash version, and are upgrading their player in response. Even before the introduction of an automatic update feature, adoption rates for the Flash Player were very high. From the time a new Player was released, it would achieve 55%-65% market penetration within 6 months. This is a good indication that Flash developers are quick to take advantage of new features in Flash.</p>
<p>Another measure of technical progress is the rate at which new features are added to the Flash Player (as opposed to the Flash authoring tool, where some changes will be merely cosmetic). During the past four releases there have been three complete overhauls of the Flash programming language, the introduction of powerful video functionality, bitmap effects (motion blur, dropshadows, etc) and filters, to name just a few new features. Because version targeting ensures there is no pressing need for Flash developers to upgrade, Adobe needs to continually improve Flash&#8217;s feature set to give its customers a compelling reason to purchase an upgrade license. Rather than stymieing progress, version targeting actually encourages technical advances in Flash.</p>
<h3>A personal perspective</h3>
<p>I worked as a full-time Flash developer for four years, and Flash development still accounts for about half the work I do. Until this week I hadn&#8217;t given much thought to the impact of version targeting in Flash, but on reflection I see that it has compelling benefits for end-users, seasoned developers, and Flash novices alike.</p>
<p>Flash has a very healthy development community keen to push the boundaries of their medium, and even though version targeting enables many developers to work at a lower level, I don&#8217;t see any evidence that this skill gap impedes advances in the field. I myself still publish content targeting Flash Player 8, and am familiarizing myself with the new ActionScript 3 programming language in the meantime. I certainly don&#8217;t feel that I am holding anyone back by learning at my own pace!</p>
<p>I also consider that version targeting goes a long way towards easing the Flash developer&#8217;s workload. If I build a site targeting Flash Player 8, I know without testing that it works in Flash Player 9 too, and vice versa. I know too that I will never need to &#8220;fix&#8221; that site to comply with a future Flash Player release. This forward compatibility is something that I take for granted when I develop a Flash site, and the idea of &#8216;fixing&#8217; my legacy projects every couple of years seems totally absurd. Yet for some reason this &#8220;break and fix&#8221; cycle is considered perfectly normal for HTML websites.</p>
<h3>What&#8217;s good for the goose</h3>
<p>Of course, comparing Flash Player with a web browser is not like comparing apples with apples: Flash and Internet Explorer have very different business models; Flash has no serious competition whereas Internet Explorer is part of a busy browser ecosystem; Adobe is free to introduce new features to Flash as it sees fit whereas Microsoft is beholden to various working groups; the upgrade cycle of Flash is driven by web developers rather than software vendors. What works for Flash may not necessarily work for Internet Explorer.</p>
<p>Yet I believe there are enough similarities to draw a comparison. Flash shows us that under the right conditions version targeting can actually be beneficial for everyone involved in the development, delivery, and consumption of content for the web.</p>
<h3>Footnotes</h3>
<p>* There is only once exception I can think of: new &#8216;sandbox security&#8217; restrictions introduced in Flash Player 7 caused some older Flash applications to break.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

