<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Jeroen Coumans</title>
    <link>http://virb.com/1629900533970680</link>
    <description><![CDATA[]]></description>
    <generator>Virb 2.0 (@1629900533970680)</generator>
    <language>en</language>
    <item>
      <title>Drupal user account pages</title>
      <link>http://virb.com/1629900533970680/posts/text/863675</link>
      <description><![CDATA[	<p>It's the little things that countâ¦</p>

	<p>On a default Drupal installation, the user account could really use some love and attention. There are a number of predefined pages to allow users to register themselves on the website, but the usability of these pages is pretty bad. This post is about one little example: they all share the same title. I'm going to show you how you can fix that. </p>

	<p></p>

	<p>Have a look at the drupal.org <a href="http://drupal.org/user/register">register</a>, <a href="http://drupal.org/user">log in</a> and <a href="http://drupal.org/user/password">request new password</a> pages. You'll note that each one has a head title of "User account | drupal.org", and a page title of "User account". While each page certainly has a different function, why would they all have the same titles? That's just weird and plain bad usability - a page title should be descriptive of the main function of a page.</p>

	<p>Anyway, there are ways to override that. Drupal uses a placeholder variable to dynamically determine the page and head title based on the internal path. In your theme, you'll find something like the following:</p>

	<p></p>

	<p>And:</p>

	<p><h1></h1></p>

	<p>Since Drupal determines its context based on the path that is requested, simply checking for the arguments which are passed to the page is enough. </p>

<pre>
<h1></h1>
</pre>

	<p>It's really simple <span class="caps">PHP</span>, checking for the first and second arguments (arg(0)  and  arg(1)). Note that instead of printing out the text, it's wrapped in the <a href="http://api.drupal.org/api/function/t">t</a> function, which will make it translatable. That way, you don't have to edit the theme in order to translate your texts afterwards. <br />
As you can see, there are two checks for the login page. That's because both the user and the user/login pages present a login page, and the Drupal menu that is presented on the account pages defaults to the user page. So we have to check if the second argument is empty, and if it's not, print the title of the login page. If we didn't add that extra check, we'd have overridden the default user account pages, which all follow the form user/uid, where uid is the numerical id of the user. </p>

	<p>Just adding the same checks to the  title will suffice to change it there as well. Full credit goes to the Drupal community, as this snippet  is based on <a href="http://drupal.org/node/100450">drupal.org</a>. You can see it in action on the new <span class="caps">CJP</span> website: <a href="http://beta.cjp.be/user">login</a>, <a href="http://beta.cjp.be/user/register">register</a> and <a href="http://beta.cjp.be/user/password">forgot password</a>. </p>]]></description>
      <pubDate>Thu, 09 Oct 2008 07:40:45 -0700</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/863675</guid>
    </item>
    <item>
      <title>Thesis abstract</title>
      <link>http://virb.com/1629900533970680/posts/text/526211</link>
      <description><![CDATA[<p><a href="http://www.flickr.com/photos/jeroencoumans/2349810009" title="Thesis abstract image"><img src="http://farm4.static.flickr.com/3292/2349810009_e9fa259492.jpg" alt="Thesis abstract image" title="Thesis abstract image" class=" flickr-photo-img" height="500" width="359" /></a></p>

	<p>An average human being is capable of keeping approximately 6 items in his short-term memory. Then why do we still think it's natural that websites present us dozens, or even hundreds, of links to navigate through them? </p>

	<p>According to Jakob Nielsen, <a href="http://www.useit.com/alertbox/20000109.html">navigation on the web is often overdone</a>: there are too many links on a page. His research shows that users ignore navigation area's and dive straight into the content area. Despite the growing importance of disciplines such as information architecture and usability research, or the use of design patterns and content management systems in the website development process, navigation is still fundamentally based on clicking links in lists. Let's not forget that the Web as medium is still very young: "I think the Internet is still on Day One... You can't predict some of the really big changes. Who would have said that the development of the automobile would have led to suburbia?" (Jeff Bezos, Amazon <span class="caps">CEO</span>). So there is still plenty of opportunity for experiments with new interfaces to make information accessible. That is also the purpose of this thesis. Through a design research, this thesis will focus on exploring different concepts of website navigation. </p>

	<p></p>

	<p>To escape the confines of current ideas of 'navigation', this research will try to come up with different metaphors for navigation by doing user research in the form of a narrative enquiry. An example of an often used metaphor is the word 'menu', which relates the choice of a webpage with the choice of a dish in a restaurant. What other metaphors are conceivable, and what interaction concepts can be designed around them? This will be the central theme of the first part of the research. </p>

	<p>Then the state of the art of user interfaces and interaction design will be examined to determine what concepts may be usable to create alternative forms of website navigation. For example, the concept of the Zoomable User Interface (<span class="caps">ZUI</span>) is based on distance: the further away an item is, the smaller it appears. Full details are visible when something is 'zoomed in'. This is very effectively used on Google Maps. Another example is the Textual User Interface (<span class="caps">TUI</span>), which is language-based and works by giving commands to the computer. Thanks to its speed and extensibility, this is a very powerful interaction mechanism. Although it may seem like nothing new, as command prompts are as old as the '70's, these principles are rarely used on websites, with search interfaces as the proverbial exception to the rule. </p>

	<p>The result of these and other experiments will be a series of paper prototypes, wireframes, design <br />
mockups and proof of concepts. These will be analysed from a qualitative point of view with user <br />
research, and documented through thick descriptions. Of course, I will publish my results here in my journal as much as possible. </p>

	<p>A <a href="/portfolio/2008/03/thesis-abstract-cover">write-up of the creation of the thesis image</a> can be found in my portfolio. </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/255713046" height="1" width="1" />]]></description>
      <pubDate>Fri, 21 Mar 2008 18:20:55 -0700</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/526211</guid>
    </item>
    <item>
      <title>Identity management</title>
      <link>http://virb.com/1629900533970680/posts/text/519452</link>
      <description><![CDATA[<p><a href="http://www.flickr.com/photos/jeroencoumans/2340481553" title="My website anno 2008"><img src="http://farm4.static.flickr.com/3087/2340481553_923aec1e4c.jpg" alt="My website anno 2008" title="My website anno 2008" class=" flickr-photo-img" height="500" width="269" /></a></p>

	<p>As the World Wide Web continues to evolve, people use it for increasingly personal and social purposes. The current social networking sites are quickly gaining critical mass, moving the adoption curve forward from an early majority to the late majority. In the Netherlands, Internet usage in is still rising, and the skills of surfers continue to improve. According to the Dutch bureau of statistics <span class="caps">CBS</span>, <a href="http://www.cbs.nl/nl-NL/menu/themas/vrije-tijd-cultuur/publicaties/artikelen/archief/2008/2008-2397-wm.htm">more than 2 million people have designed a webpage</a>. <br />
As we put more of ourselves online, our identity expressions become more and more shattered throughout the web. Facebook, Flickr, Last.fm and Hyves all represent a small piece of me and my online identity. Bringing these all together will take a couple of years, although with developments like OpenSocial, OpenAuth and OpenID the first building blocks are in the pipelines. </p>

	<p>Anyway, the whole reason of this introduction is that I've made a small step in consolidating my Web presence - I have now merged my portfolio into my blog. I really liked the design of my portfolio so I tried to keep as many aspects of it as possible, and only made small tweaks as necessary (although there are many of themâ¦). There are some big improvements to the design though, mostly fixing mistakes from <a href="/journal/redesign">my last redesign</a>. </p>

	<p></p>

	<p>First of all is a return of a navigation block at the top of the page. Since the previous incarnation only had two really big sections (the blog and the links), I didn't see a need for a permanent navigation block. But it's back with a vengeance, sporting a shiny jQuery-powered rollover effect. </p>

	<p>The <a href="/journal">journal</a> itself now boasts 10 entries again. This means more scrolling, but less paging, which is a Good Thing. This is more conform the <a href="/journal/design-and-usability-updates">Mullet-style layout</a> I originally intended for the journal. </p>

	<p>My <a href="/elsewhere">elsewhere</a> section, where I aggregate all my favorite website links, has dramatically improved thanks to the use of a four-column grid design. It's one of those improvements that seem so obvious in rertospect that I wonder why I didn't come up with it sooner. I've also increased the item count to 100, which is quite hefty, but very manageable. I found myself getting caught up browsing through my old links again, re-discovering old gems! </p>

	<p>Thanks to the power of Drupal, I'm able to organize my portfolio in some pretty cool ways. Using the taxonomy module, every portfolio item is tagged with the medium or technology in which it is created. With the books module I created 5 distinct sections through which you can browse: my current <a href="/portfolio/freelance">freelance work</a>, <a href="/portfolio/cmd"><span class="caps">C-MD</span> work</a>, <a href="/portfolio/solide">Solide work</a>, <a href="/portfolio/print">print</a>, and my early <a href="/portfolio/art">art work</a>. For the <a href="/portfolio">landingspage</a> I decided to use large thumbnails, giving an immediate (and for some, sufficient) idea of my work. Clicking on the images shows a larger version in a lightbox, while clicking the title or the casestudy link will take you to the permanent link of a portfolio page.</p>

	<p>Getting this all to work in Drupal the way I wanted to involved some heavy themeing work, which I'd be happy to write up if anyone's interested. Unfortunately, there were quite some places where I couldn't override a theme function or manipulate Drupal's <span class="caps">HTML</span> output (I'm looking at you, Views module), and it was time-consuming to find the proper way to handle these cases. I resorted to manipulating the <span class="caps">DOM</span> with jQuery to fix some annoying bugs. </p>

	<p>I made no effort whatsoever to get this working in Internet Explorer 6. I don't intend to either, unless anyone has compelling arguments otherwise. Less than 4% of my visitors uses Internet Explorer 6, which is such an insignificant amount that it doesn't warrant the extra development time and headaches. </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/253167121" height="1" width="1" />]]></description>
      <pubDate>Tue, 18 Mar 2008 01:29:34 -0700</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/519452</guid>
    </item>
    <item>
      <title>Design literature</title>
      <link>http://virb.com/1629900533970680/posts/text/411089</link>
      <description><![CDATA[<p>I'm assembling a list of books for my <a href="./journal/design-research">research</a>. This list is already too long, which probably means my subject is too broad. However, I like to read and these books will come in handy no matter what! </p>

	<h3>On (interaction) design:</h3>

	<ul>
		<li>In the Bubble: Designing in a Complex World - John Thackara</li>
		<li>Computers as Theatre - Brenda Laurel</li>
		<li>Interface Culture : How New Technology Transforms the Way We Create and Communicate - Steven Johnson</li>
	</ul>

	<h3>Technical and methodological books:</h3>

	<ul>
		<li>Thoughtful Interaction Design: A Design Perspective on Information Technology - Jonas L]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:08 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411089</guid>
    </item>
    <item>
      <title>Design Research</title>
      <link>http://virb.com/1629900533970680/posts/text/411088</link>
      <description><![CDATA[<p>As you might be aware, I'm currently doing a master Communication & Multimedia Design (C-MD). Coming up with a good research subject is, for most of us, one of the hardest tasks. To make it easier, we were asked to setup a blog to reflect on our interests, hobbies, experience, philosophy etc. Rather than spin off another web site, I'm going to post my thoughts here under the tag <a href="./journal/tag/c-md">c-md</a>. </p>

	<p></p>

	<p>The first phase of my design research is a discovery phase. With almost a year to spend on any subject within the context of C-MD,, what should I choose? Obviously, it has be related to my previous work and interests, and should also be socially relevant. But my interests have always been rather broad, encompassing cultural trends and concepts such as new media, Web 2.0, co-creation and user-generated content, virtual communities and Open Source, to methodologies and techniques such as interaction design, gaming theory, artificial intelligence, knowledge management, accessibility and usability, and the semantic web. </p>

	<p>What I like most, though, is to think up of creative solutions for converting traditional knowledge management problems into a web-based solution, making use of the strengths of the Internet as a new medium. My reasons for doing this master were to more fully educate myself on the medium-specific strengths and weaknesses of the Internet, and its related creative professions. There is a lot of potential on the Web due to its hypertextual, multi-media nature, but most of it is untapped or undiscovered. But unlike photography, radio, television or film, the Web is a fully interactive medium with lots of social potential. Only now, with the trends and techniques that are developed under the Web 2.0 umbrella, are we untapping some of that potential. So that's an area I'd like to work on: the medium-specific strengths of the Internet and its social and interactive potentials. But obviously, that's still way too broad for a specific research subject. </p>

	<p>A while ago, I stumbled upon the website <a href="http://www.politieonderzoeken.nl">politieonderzoeken.nl</a>. This website represents the first humble babysteps of the Dutch Police to use the Web for engaging the public in solving police cases. I really like this concept, although I hate the execution of the website. On the most basic level, the site is technically built in <a href="http://validator.w3.org/check?verbose=1&amp;uri=http%3A%2F%2Fpolitieonderzoeken.nl">invalid</a> and <a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=2&amp;url1=http%3A%2F%2Fpolitieonderzoeken.nl%2F">inaccessible</a> <span class="caps">XHTML</span>, thus failing to comply with the Dutch <a href="http://webrichtlijnen.overheid.nl">Web guidelines</a>, which are mandatory for all governement websites. And to add insult to injury, all basic and mostly <strong>textual</strong> information is encoded in Flash, thus rendering it completely inaccessible for search engines, not to mention that its a <a href="./journal/should-macromedia-open-flash">proprietary technology, not an open standard</a>. </p>

	<p>Technical problems aside, I think the concept of the police and the public interacting in a meaningful way to solve crimes is essential for a more efficient and engaging use of the Web. And while I can see that the police has to censor comments on the site so they won't hamper with the investigation, by what other means can people on the Web be used as a collective intellgence? And in what ways can these solutions be abstracted or standardized, sort of like design patterns for harnessing human intelligence? The <a href="http://www.mturk.com/mturk/welcome">Amazon Mechanical Turk</a> can be seen as a first commercial exploitation of this idea. </p>

	<p>My research proposal (at least for now), would thus be to investigate and experiment with interaction patterns in order to utilize their collective knowledge and potential. This goes further then setting up a virtual community, although that would be one of the first steps. One of the areas that I'd love to look into is the <a href="http://en.wikipedia.org/wiki/Alternate_Reality_Game">Alternate Reality Game</a>, which uses game design theory to mobilize individuals and groups into solving certain puzzles:</p>

	<blockquote>
		<p>"An alternate reality game (<span class="caps">ARG</span>) is an interactive narrative that uses the real world as a platform, often involving multiple media and game elements, to tell a story that may be affected by participants' ideas or actions." </p>
	</blockquote>

	<p>While they're pioneered and most often used for marketing purposes (an early example was the <span class="caps">ARG</span> around the movie A.I.), they're also used to explore future trends and ideas. For example, the <span class="caps">ARG</span> <a href="http://www.worldwithoutoil.org">World Without Oil</a> uses a simple future doom scenario ("what if the oil supply of the world would run out?") to engage users into creating video's, blogs, photo's, stories, and discussions which revolve around this concept (see for more discussion the blog post <a href="http://www.futureofthebook.org/blog/archives/2007/03/world_without_oil_the_democrat.html">World without oil: Democratic Imagination?</a>):</p>

	<p>The potential for ARG's as real-world collaborative problem-solving platforms is enormous, especially when mixing in real-world problems, such as the questions raised by the police in their website. The <span class="caps">ARG</span> could be an encompassing genre within which to create puzzles, challenges and question for users to solve. I'd love to explore their potential as part of my research next year. </p>

	<p>Thoughts? Comments? Criticisms? Please provide your feedback in the comments! </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/115851787" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:07 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411088</guid>
    </item>
    <item>
      <title>Simple, accessible jQuery menu</title>
      <link>http://virb.com/1629900533970680/posts/text/411087</link>
      <description><![CDATA[<p>Not every website needs to be powered by a content management system, or even a simple blog engine. Sometimes, a fully powered <span class="caps">CMS</span> like Drupal or Joomla is just a little too much. Sometimes it's not even possible to use a database and all you have is your webserver, maybe equipped with <span class="caps">PHP</span> or <span class="caps">ASP</span>. For a simple website, it's even overkill to add the complexity of a database, and all you want is just some folders with static <span class="caps">HTML</span> files in them. But to make it easier to maintain and expand this website, you create some simple templates for the header and the footer, so you don't have to change all files if you need to change the copyright date or the tagline. These are included via some server-side processing, for example, with <a href="http://httpd.apache.org/docs/1.3/howto/ssi.html">Apache server-side includes</a>, or <a href="http://nl3.php.net/include/"><span class="caps">PHP</span> includes</a>.</p>

	<p>But then you run into a roadblock when you try to maintain your navigation in a similar vein. Being a good standardistas, you use an <a href="http://alistapart.com/articles/taminglists/">unordered list</a> for your navigation, and use <span class="caps">CSS</span> to present it. But in your navigation, you want to highlight the currently viewed page, since this greatly enhances the usability of your website and lets readers know where they are. And that requires a predetermined strategy to setup and maintain, such as using body id's and menu id's, or using <span class="caps">PHP</span> to match the page with the proper menu. These solutions have some drawbacks which led me to investigate an alternative solution. In this article, we'll look at some common techniques for highlighting the current menu item in an otherwise static website, and at a Javascript-based solution. </p>

	<p></p>

	<h3>The <span class="caps">ALA</span> way</h3>

	<p>First of all, the most common solution is to add a class to the active menu item and style it with <span class="caps">CSS</span>. For example:</p>

<pre>
<ul id="nav">
  <li><a href="/">Home</a></li>
  <li><a href="/products/" class="active">Products</a></li>
  <li><a href="/contact/">Contact</a></li>
</ul>
</pre>

	<p>And in your CSS:</p>

	<p><pre>
#nav a {
  color: #999;<br />
}</p>

	<p>#nav a.active {
  color: #000;
  font-weight: bold;<br />
}<br />
</pre></p>

	<p>That's easy enough to build, but it requires that your menu adapts itself to the current page in order to add the required class. You could use <span class="caps">PHP</span> to solve this, by adding some logic in the navigation file to match the current page with a menu item. This is essentially the approach that is explained in the ALA article <a href="http://www.alistapart.com/articles/keepingcurrent">Keeping navigation current with PHP</a>. For each page, a unique id is added to the top, and each menu item in the separate navigation.php checks to see if the page id matches the menu id. If it does, a class is added which is styled with CSS:</p>

<pre>
<ul id="nav">
  <li><a href="/">Home</a></li>
  <li><a href="/products/">Products</a></li>
  <li><a href="/contact/">Contact</a></li>
</ul>
</pre>

	<p>It's a nice solution, but it still requires too much work: each page must include a unique identifier, and for each menu item you have to add a verbose check. We're looking for a solution that doesn't require any server-side logic, just some means to include files. Adding a page to your site should be as easy as creating a new page and adding a new link in the navigation file. </p>

	<h3>CSS-only does the trick</h3>

	<p>An alternative technique uses <a href="http://www.456bereastreet.com/archive/200503/setting_the_current_menu_state_with_css/">body id's and navigation id's</a>. Each page page is assigned a unique id, just as each navigation item. If the body id and the navigation id are the same, then the menu item should be highlighted. Then you can add <span class="caps">CSS</span> rules for each combination of page and navigation id. Here's an example:</p>

<pre>
#home a#nav-home,
#products a#nav-products,
#contact a#nav-contact {
  color: #000;
  font-weight: bold;
}
</pre>

	<p>Essentially, it's the same solution as the <span class="caps">PHP</span> method above, except it uses <span class="caps">CSS</span> to determine the logic of matching page id's with menu id's. Therefore it has the same drawbacks: each page requires a unique id, and adding a page means that your <span class="caps">CSS</span> needs to be changed. Our solution shouldn't require that much work or that much code, and should be unobtrusive: it has to work with our current markup and <span class="caps">CSS</span>. </p>

	<h3>The Javascript way</h3>

	<p>With Javascript, we can maintain our <span class="caps">HTML</span> and <span class="caps">CSS</span> seperate from the main file. We can use it to figure out if the page we're currently viewing matches a menu item, and if so, add a class to it which is styled with <span class="caps">CSS</span>. This solution doesn't require any page identifiers, serverside scripting or additional <span class="caps">CSS</span> rules for new pages. We start with the following minimal markup:</p>

<pre>
<ul id="nav">
  <li><a href="/">Home</a></li>
  <li><a href="/products/">Products</a></li>
  <li><a href="/contact/">Contact</a></li>
</ul>
</pre>

	<p>And this minimal CSS: </p>

	<p><pre>
#nav a {
  color: #999;<br />
}</p>

	<p>#nav a.active {
  color: #000;
  font-weight: bold;<br />
}<br />
</pre></p>

	<p>To make it really easy, we use the excellent <a href="http://jquery.com">jQuery</a> library to do the hard work for us, all we need to do is add the logic to figure out if the <a href="http://docs.jquery.com/Tutorials:Auto-Selecting_Navigation">current page matches a menu item</a>, and add the class="active" to this item. This is accomplished with merely four lines of code:</p>

<pre>
jQuery(function($) {
  var path = location.pathname.substring(1);
  $('#nav a[@href$="' + path + '"]').addClass('active');
});
</pre>

	<p>It looks a bit complicated at first sight, but it's not so difficult. </p>

	<p>The first line, jQuery(function($) { is shorthand for $(document).ready() and makes sure that all code within will be executed <a href="http://www.learningjquery.com/2006/09/introducing-document-ready">as soon as the <span class="caps">DOM</span> is ready</a>. The second line, var path = location.pathname.substring(1); creates a variable called path which contains the path to the current page as it appears in the browser address bar. The third line is a bit more complicated. The first part, $('#nav a[@href$="' + path + '"]'), searches within the nav element the link whose location (the href) is equal to our variable path. The second part, .addClass('active'); adds the class attribute with a value of "active" to that element. The last line, }); closes the jQuery function and finishes our code. </p>

	<p>That's all that is required. I've created a <a href="http://lab.jeroencoumans.nl/jquery-menu/basic/">basic example</a> that includes all of the above ingredients.</p>

	<p>This is an accessible solution that only requires minimal markup. Since we use valid and semantic markup, all content is readily available for search engines, screen readers, mobile devices and other user agents. We enhance this markup by using <span class="caps">CSS</span> for presentation, and add Javascript to further improve the user experience. And finally, it's easy for us to setup and maintain.  </p>

	<h3>Spicing it up</h3>

	<p>But wait: we can go further with this! What if your site grows and you decide to add some articles. To make it easy to maintain, you put each article in its own folder under /articles/. Your navigation.php would look like this:</p>

<pre>
<ul id="nav">
  <li><a href="/">Home</a></li>
  <li><a href="/products/">Products</a></li>
  <li><a href="/articles/">Articles</a>
    <ul>
      <li><a href="/articles/one/">Article one</a></li>
      <li><a href="/articles/two/">Article two</a></li>
      <li><a href="/articles/three/">Article three</a></li>
    </ul>
  </li>
  <li><a href="/contact/">Contact</a></li>
</ul>
</pre>

	<p>As you can see, it's still a simple list, and the the articles submenu uses a nested list for it's sub navigation. Clean and easy, just as we like it. Our Javascript file is well equipped to handle nested lists, but wouldn't it be nice to only show the sub navigation if the articles link is chosen? Remember, since our Javascript is added <em>on top</em> of semantic markup that is styled with <span class="caps">CSS</span>, it works unobtrusively and enhances the page for users with Javascript enabled, but doesn't interfere with clients that don't have it enabled. </p>

	<p>Let's see what we can come up with. First of all, we'll hide the subnavigation with Javascript. Since we also will use Javascript to show it, we make sure all functionality stays in the same layer. No Javascript, and everything is shown. This is easily accomplished with jQuery with this line:</p>

<pre>
$('#nav ul').hide();
</pre>

	<p>The first part selects all unordered lists within our #nav element, and the second part hides it. This is an important design principle of jQuery, namely the ability to select <span class="caps">HTML</span> elements and apply behaviour to it by chaining them. We will use this ability to expand the menu matching code and add an action that will show the sub navigation: </p>

<pre>
.siblings("ul").slideDown();
</pre>

	<p>Chained together, it looks like this:</p>

<pre>
$('#nav a[@href$="' + path + '"]').addClass('active').siblings("ul").slideDown();
</pre>

	<p>The siblings selector makes sure that when a menu item is chosen, all lists within the same element will slide down. Remember that our sub navigation is in a list item together with the link. Therefore, the <ul> is a <em>sibling</em> of our link and can be targeted with that jQuery selector. </p>

	<p>Finally, to make sure the menu stays expanded when a sub menu item is selected, we need one last line to show the parent list. </p>

<pre>
$('#nav a[@href$="' + path + '"]').parents("ul").show();
</pre>

	<p>We need this to be a separate line since in an expanded menu, only the <strong>sibling's</strong> unordered lists are shown, not the parents. </p>

	<p>Altogether, our site.js looks like this:</p>

<pre>
jQuery(function($) {
  $('#nav ul').hide();
  var path = location.pathname.substring(1);
  $('#nav a[@href$="' + path + '"]').addClass('active').siblings("ul").slideDown();
  $('#nav a[@href$="' + path + '"]').parents("ul").show();
});
</pre>

	<p>I've also created an example of this slightly more <a href="http://lab.jeroencoumans.nl/jquery-menu/advanced/">advanced menu</a>. Note how the sub menu slides down when you click on articles, and stays shown when you select an article. </p>

	<p>So there you have it, an easy "plug and play" Javascript solution for keeping your current menu item highlighted that will allow you to use minimal markup in a seperately maintained navigation file that can be included with your method of choice (this is left as an exercise for the reader). </p>

	<p>Was it helpful? Was something not clear? Can you think of improvements or do you use another technique? Feel free to leave your feedback in the comments!</p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/121615758" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:07 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411087</guid>
    </item>
    <item>
      <title>Thesis proposal</title>
      <link>http://virb.com/1629900533970680/posts/text/411086</link>
      <description><![CDATA[<p>My pre-master year at <a href="http://c-md.be">C-MD</a> was concluded on the 25th of june with a presentation of my thesis proposal. My ideas have shifted quite a bit and my proposal evolved with it. </p>

	<p>Initially, I wanted to explore the possibilities of Web 2.0 for police research, by building on the police's initial steps on the web with <a href="http://politieonderzoeken.nl">politieonderzoeken.nl</a>. However, this was too narrow, although I worked out <a href="http://lab.jeroencoumans.nl/policeresearch/">some ideas</a> in a study course on creative design. Brainstorming more about using the web for crime solving gave me the idea of a murder game, and with this idea in mind I found <a href="http://worldwithoutoil.org">World Without Oil</a> a great inspiration. This concept had all the ingredients: a mix of reality and fiction, community building, collective intelligence, user-generated content and cross-media story telling. This Alternate Reality Game, as it is called, is my example of how the web can be used to narrate, perform and collaborate on social issues that are too big for any one individual to solve. This would become my subject for my thesis proposal as I presented it: </p>

	<p><strong>"How can the Alternate Reality Game be used to make the world a better place?"</strong></p>

	<p>Due to the many exams we had in June I wasn't able to further refine my research question, as it is still way too broad. When college starts again in September, I'll have a couple of weeks to tweak it and turn it into something that's measurable and executable within a year. I'll probably work out one specific aspect which interests me, for example to investigate how game elements can be used in community building to increase the participation ratio. </p>

	<p>In any case, if you're interested, my research proposal can be found in the articles: <a href="/articles/everything-is-game">Everything is a game</a>. Feel free to comment on it! </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/130394040" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:06 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411086</guid>
    </item>
    <item>
      <title>Edupaper</title>
      <link>http://virb.com/1629900533970680/posts/text/411085</link>
      <description><![CDATA[<p>Edupaper is an innovative company with a green goal: it intends to reduce paper use in education by implementing mobile applications. Using electronic paper will reduce the number of books students need to carry, and in effect reduce the number of trees which have to be cut for books that students. Furthermore, by equipping and connecting them with Open Source Software such as Dokeos, it will enable students to learn more efficiently. Of course, when Frits Hoff, <span class="caps">CEO</span> of Edupaper, approached me for designing his website, I gladly accepted. </p>

	<p><a href="http://edupaper.nl"><img src="/images/edupaper-2007.png" title="Screenshot of the new Edupaper.nl design" alt="Screenshot of the new Edupaper.nl design" /></a></p>

	<p></p>

	<p>After a few iterations we finally settled on this design, which I am quite fond of. Since modern electronic paper has such a high resolution and strong backlight, it's allmost as sharp as regular paper and can still be used outside. To support this communication goal, I focused on the typography, using large corpses for legibility and employing a vertical rhyme. Another goal was to make it as clean and fresh as possible, which I think is achieved very nicely by the use of just a few supportive colours.</p>

	<p>The design was built as a Drupal theme. There were some small challenges, mostly in getting the vertical rhyme just right so it would line out with the background stripes. There was a very annoying issue with images seemingly getting a 7px padding in Firefox, which was clearly seen in Firebug, despite that all paddings and margins were explicitly set to 0. To solve this, I resorted to floating all content images, which isn't very nice but at least they line up properly. </p>

	<p>For the logo, I used an alpha-transparent <span class="caps">PNG</span> image, since I wanted the background lines to shine through. This meant that a little bit of Javascript had to be used for Internet Explorer 6, which doesn't support this natively. It was very easy with a <a href="http://jquery.andreaseberhard.de/pngFix/index.html">jQuery plugin</a>, but unfortunately it required upgrading of Drupal's jQuery version, which is stuck at 1.0. The Drupal developers decided to stick with the same major version of jQuery so module developers have a stable target to work with, but it makes it so much harder for us theme developers since most plugins available nowadays require version 1.1. Fortunately, the <a href="http://drupal.org/project/jquery_update">jQuery upgrade module</a> takes care of upgrading Drupal's Javascript so it works with jQuery 1.1, but it requires you to replace the system jquery.js. This isn't always feasible, especially in a multi-site installation. But I digressâ¦</p>

	<p>All in all, I think the website turned out great, and I'm certain it brings a new level of professionalism and clear communication which will take Edupaper to the next level. </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/147269345" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:06 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411085</guid>
    </item>
    <item>
      <title>YUI grids extension</title>
      <link>http://virb.com/1629900533970680/posts/text/411084</link>
      <description><![CDATA[<p>Despite the extra required &lt;div&gt; tags, I regularly use the <a href="http://developer.yahoo.com/yui/grids/">Yahoo! UI grids framework</a>. This provides several advantages when buidling multi-column layouts with CSS. Besides speedy development and source-order independence, it gives you a lot of flexibility when creating your site. More practically, it's extensively tested in A-grade browsers which includes the ancient, but still widely used Internet Explorer 6). Lastly, they're almost completely driven by classes, which means you can add your own, semantically chosen, id's.</p>
<p>The default widths provided can be used for pixel-precise layouts while maintaining font-size based scaling, but there's one curious thing about the default grids that has always bothered me. For the left sidebar, they provide widths of 160px, 180px and 300px, while for the right sidebar, they provide 180px, 240px and 300px. This asymmetry has bothered me long enough, so I whipped up some code for two additional sidebar configurations: the left 240px sidebar, and the right 160px sidebar. </p>
<p></p>
<p>You should be able to add the following code to any release of the grids.css:</p>
<pre>
/* yui-t8: 240 on left */
.yui-t8 #yui-main {
  float: right;
  margin-left: -25em;
}

.yui-t8 .yui-b {
  float: left;
  width:18.4608em;
  *width:18.016em;
}

.yui-t8 #yui-main .yui-b {
  margin-left:19.4608em; 
  *margin-left:19.016em;
}

/* yui-t9: 160 on right */

.yui-t9 #yui-main {
  float: left;
  margin-right: -25em; 
}

.yui-t9 .yui-b {
  float:right;
  width:12.3207em;
  *width:12.0106em;
}

.yui-t9 #yui-main .yui-b {
  margin-right: 13.3207em;
   *margin-right:13.0106em;
}
</pre><p>I tested them in the major browsers and it seems to work really well (it would really surprise me if they didn't, since I used the exact same measurements as in .yui-t1 and .yui-t5).</p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/155106819" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:05 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411084</guid>
    </item>
    <item>
      <title>Drupal image attach block module</title>
      <link>http://virb.com/1629900533970680/posts/text/411083</link>
      <description><![CDATA[<p>I recently created several <span class="caps">PHP</span> blocks for a Drupal website that made heavy use of the <a href="http://drupal.org/project/image">image module</a> and the image_attach module. While the block creation wasn't very difficult, it was still a process that took me a long night of researching <a href="http://api.drupal.org">api.drupal.org</a> and fiddling with <span class="caps">SQL</span> queries. (It was a great exercise though, since I hadn't practiced my PHP/MySQL skills since  I followed a basic course at <a href="http://c-md.khlim.be">C-MD</a> last spring. It's amazing how much you forget if you don't keep practicingâ¦ )</p>

	<p>Anyway, the website I created these blocks for has an extensive product database set-up as custom nodes in Drupal. Besides presenting plain text information on their products, they also wanted to easily maintain their product photo's, and present them in galleries. To make this possible, I set up the image module. All photographs were imported at once via <span class="caps">FTP</span>, and attached to individual product nodes through the image_attach module. This proved to be very useful, since they could attach the same image to various products, e.g. for variants of the same product, and also multiple images to one product. </p>

	<p>The challenge was for product pages to display the images in the sidebar. In Drupal, there is a clear seperation between node content and all other content, and they don't mix very well. So it's very difficult to display a piece of content in another place on your website without resorting to hacks or writing checks in your theme display logic. After Googling for a while, I took it upon myself to write two <span class="caps">PHP</span> blocks: one that displayed the attached images to the currently viewed node, and one block that displayed the nodes attached to the currently viewed image. This established the relationship between image and product, and allows users to click through the photo album to products, and vice versa.</p>

	<p></p>

	<p>Setting up these blocks wasn't particularly hard with the <a href="http://api.drupal.org/api/function/block_example_block/5">great example</a> of the <a href="http://api.drupal.org/api/function/hook_block/5">hook_block function</a> provided with the Drupal <span class="caps">API</span> documentation. With this template, it was mostly a matter of copying the provided code, and filling in the blanks for displaying my own queries. I spent a lot of time investigating Drupal's query functions, and searching for ways to access node information in a block context. For that, the following snippet proved very handy: </p>

<pre>

</pre>

	<p>This loads the node object, the concept in Drupal for a content page (as opposed to dynamically generated pages, such as listings of pages). Knowing what piece of content a user is currently viewing is essential for determining if the block needs to do something with it. </p>

	<p>While the <span class="caps">PHP</span> blocks work great, I decided to go the extra mile and create modules of them. This has numerous advantages. By creating a module, the functionality can be easily deployed on other Drupal installations. For this customer, several localized product databases will be set-up. In a multi-site setup, this will mean that the codebase can be maintained and updated from one codebase. Also, the block can then have it's <a href="http://drupal.org/node/104319">own theming</a>, instead of the generic block theming. And it's possible to define addtional defaults or configuration settings. </p>

	<p>I'm sure there are lots of improvements that could be made to this module (and I'd love to hear about them!), but it's quite usable based on my own tests. I'm not sure if it should have a long live, since it would be perfectly acceptable for the Image module maintainers to integrate this in their own module. Nevertheless, I've attached the current code for you to download. Please leave a message if you find it useful, or if you have any suggestions for improvements! </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/158532502" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:05 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411083</guid>
    </item>
    <item>
      <title>WYSIWYG editor usability tip</title>
      <link>http://virb.com/1629900533970680/posts/text/411082</link>
      <description><![CDATA[<p>Open Source <a href="http://jeroencoumans.nl/journal/wysiwyg-text-editing-in-cms"><span class="caps">WYSIWYG</span> editing in CMS</a> still sucks, but with developments like the <a href="http://www.wymeditor.org/en/">WYMeditor</a> ("What You Mean" editor, built on jQuery) the situations is <a href="http://www.456bereastreet.com/archive/200612/forget_wysiwyg_editors_use_wysiwym_instead/">improving</a> <a href="http://www.standards-schmandards.com/2006/wysiwym/">steadily</a>. This editor lets content writers focus on the structure of their document instead of visual layout. As you can see, this editor provides subtle clues about the type of content you're currently editing with a clever stylesheet. Unfortunately, the WYMeditor is still in early beta, and <a href="http://drupal.org/project/wymeditor">Drupal's module</a> lags a couple of versions behind.</p>

	<p><img src="/images/wymeditor.png" title="WYMEditor in its default configuration" alt="WYMEditor in its default configuration" /></p>

	<p></p>

	<p>Until it's finished though, it's very use to use the WYMEditor stylesheet in your current editor (I mostly recommend FCKEditor in a stripped configuration, but TinyMCE works just as well). The stylesheet used by WYMEditor makes it very clear wether you're editing a block level element or an inline element. It adds little icons to signify the semantics of the elements. This makes it very easy to determine if there are any stray headers or paragraphs in your content, a problem that often occurs after copious editing but that is nearly impossible to fix without editing the source code. </p>

	<p>Using this stylesheet in your own editor is very easy. Just download a copy of WYMeditor, extract it and copy the entire contents of the iframe/default/ directory to a speficic location on your webserver. In FCKEditor, you can edit the file fckeditor/fckconfig.js and edit line 32, which states:</p>

	<p>
FCKConfig.EditorAreaCSS = FCKConfig.BasePath + 'css/fck_editorarea.css' ;
</p>

	<p>The last part (css/fck_editorarea.css) points to the location of the <span class="caps">CSS</span> used by FCKEditor's textarea. Adjust it to reflect the location of WYMeditor's <span class="caps">CSS</span> file, which is called wymiframe.css. </p>

	<p>Note that it's not necessary to manually adjust this file if you use the <a href="http://drupal.org/project/fckeditor">Drupal module for FCKEditor</a>. Just go to admin/settings/fckeditor and put the location of wymiframe.css in the Custom stylesheet field, like this:</p>

	<p><img src="/images/fckeditor-settings.png" title="Obviously, adjust your path to your own location" alt="Obviously, adjust your path to your own location" /></p>

	<p>That's it! Happy editing! </p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/174923691" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:05 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411082</guid>
    </item>
    <item>
      <title>Do you use personas?</title>
      <link>http://virb.com/1629900533970680/posts/text/411081</link>
      <description><![CDATA[<p><a href="http://www.37signals.com/svn/posts/690-ask-37signals-personas">37signals state that they don't use personas</a> because:</p>

	<blockquote>
		<p>"We use ourselves. I believe personas lead to a false sense of understanding at the deepest, most critical levels."</p>
	</blockquote>

	<p>Personas are poor substitutes for real people, they argue, and you should always base your decisions on the problems and behaviour of real people instead of passive abstractions of people. This reasoning fits perfectly with their "getting real" process, which argues for a very agile development process. </p>

	<p></p>

	<p>It's an interesting point, but this doesn't mean that personas are therefore useless. Of course, personas should never be used as stand-ins for actual users, and thus can never provide the feedback that real people provide - it's impossible to do usability testing with them!. Rather, they're a heuristic tool to contextualise your design problems. Personas allow you to frame your design in a way that puts the goals of real people at the <a href="http://www.37signals.com/svn/archives/000737.php">epicenter  of your interface</a>. By making personas an integral part of the story that your design tells, they become a common ground for all involved parties, stakeholders, developers, designers, managers. </p>

	<p>Personas should be based on proper, qualitative user research. The data can come from various sources, eg. interviews, discourse analysis, observations, surveys etc. The analysis is actually the hardest part, since it's very difficult to step outside your own frame of mind when trying to really understand people's behaviours. The ethnographic techniques can be learned quite easily, but the proper understanding of the methodology and the required reflective use of it makes it a very difficult task without academic education. </p>

	<p>Clay Spinuzzi's observation that <a href="http://www.greenonions.com/archives/2005/07/24/fighting-the-user-as-victim-stereotype-one-genre-at-a-time/">designers often frame themselves as 'heroes' to rescue the poor 'users'</a> is a perfect example of designers executing a naive, superficial user research. But the solution is not to use yourself as the intended user of your application, unless you're building a product which is only meant to be used by yourself. Doing the proper research and crafting personas and scenarios are a good first step in designing not just for yourself. However, even 37signals can't be as arrogant as to presume they're representative for all the possible people that their products intend to reach. As with any tool or methodology, using it without proper understanding ultimately leads to failure, but that shouldn't be a reason to dismiss the tool completely. </p>

	<p>Edit 18/11/07: Other people weigh in as well.</p>

	<ul>
		<li> Jared Spool makes a similair point on the difference between <a href="http://www.uie.com/brainsparks/2007/11/14/crappy-personas-vs-robust-personas/">crappy personas vs. robust personas</a></li>
		<li>Boxes and Arrows publishes a timely article on <a href="http://www.boxesandarrows.com/view/building-a-data">building a data-backed persona</a></li>
		<li>Andy Budd chips in with a post on <a href="http://www.andybudd.com/archives/2007/11/personas_suck/">rethoric sensationalism</a></li>
	</ul><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/181213189" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:05 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411081</guid>
    </item>
    <item>
      <title>We feel fine</title>
      <link>http://virb.com/1629900533970680/posts/text/411080</link>
      <description><![CDATA[<p>Did you know that people are <a href="http://wefeelfine.org/findings.html#happystates">happiest</a> in Hawaii and <a href="http://wefeelfine.org/findings.html#saddestcities">saddest</a> in Singapore? And that people feel <a href="http://wefeelfine.org/findings.html#sexy">most sexy</a> in Las Vegas? <a href="http://wefeelfine.org">We Feel Fine</a> is an art experiment that has collected allmost 10 million feelings from 2 million people around the world and has built a unique interface to dive into this data. The project of internet artist <a href="http://www.number27.org/">Jonathon Harris</a> and Googler <a href="http://www.stanford.edu/~sdkamvar">Sepandar Kamvar</a> has been harvesting the expressions of human feelings from a large number of weblogs. The system searches occurences of the phrases "I feel" and "I am feeling", and stores these in a database. It also extracts additional metadata, such as age, gender, geographical location and even weather conditions. </p>

	<p><a href="http://www.flickr.com/photos/jeroencoumans/2179991629" title="We Feel Fine"><img src="http://farm3.static.flickr.com/2021/2179991629_59ccc6c9a3.jpg" alt="We Feel Fine" title="We Feel Fine" class=" flickr-photo-img" height="371" width="500" /></a></p>

	<p></p>

	<p>The interface is a thing of beauty in itself. </p>

	<blockquote>
		<p>The interface to this data is a self-organizing particle system, where each particle represents a single feeling posted by a single individual. The particles' properties - color, size, shape, opacity - indicate the nature of the feeling inside, and any particle can be clicked to reveal the full sentence or photograph it contains. The particles careen wildly around the screen until asked to self-organize along any number of axes, expressing various pictures of human emotion. We Feel Fine paints these pictures in six formal movements titled: Madness, Murmurs, Montage, Mobs, Metrics, and Mounds. (http://wefeelfine.org/mission.html)</p>
	</blockquote>

	<h3>Panel</h3>

	<p><a href="http://www.flickr.com/photos/jeroencoumans/2177161505" title="The Panel"><img src="http://farm3.static.flickr.com/2327/2177161505_467823e62c.jpg" alt="The Panel" title="The Panel" class=" flickr-photo-img" height="370" width="500" /></a></p>

	<p>At the top of the screen, there are the various attributes that function as advanced search parameters. These allow you to answer questions such as "How are women in the ages of 20-29 feeling on a rainy day in New York"? The top bar always shows the currently selected parameters, and hovering over it will open up the selection panel. </p>

	<p>The navigation metaphor is based on movements that can be selected by scroll ingover the heart at the bottom left corner of the applet and clicking on the desired movement. In essence, each movement is a separate visualisation on a selection of the data. </p>

	<h3>Madness</h3>

	<p><a href="http://www.flickr.com/photos/jeroencoumans/2177161575" title="Madness"><img src="http://farm3.static.flickr.com/2329/2177161575_a9872892df.jpg" alt="Madness" title="Madness" class=" flickr-photo-img" height="370" width="500" /></a></p>

	<p>The default movement, Madness, displays all particles shooting around the screen wildly until one is clicked, after which it reveals its content. </p>

	<h3>Murmurs</h3>

	<p><a href="http://www.flickr.com/photos/jeroencoumans/2177161643" title="Murmurs"><img src="http://farm3.static.flickr.com/2085/2177161643_3953113715.jpg" alt="Murmurs" title="Murmurs" class=" flickr-photo-img" height="370" width="500" /></a></p>

	<p>The Murmurs movement displays a scrolling list of the selected feelings. </p>

	<h3>Montage</h3>

	<p><a href="http://www.flickr.com/photos/jeroencoumans/2177161807" title="Montage"><img src="http://farm3.static.flickr.com/2322/2177161807_6b99de4db9.jpg" alt="Montage" title="Montage" class=" flickr-photo-img" height="371" width="500" /></a></p>

	<p>The Montage view loads all images in a mosaic. Effectively, it shows you how a feeling "looks" like. Photographs can be clicked to zoom, revealing the associated sentence and author information. </p>

	<h3>Mobs</h3>

<div style="img { float: left; }">
<a href="http://www.flickr.com/photos/jeroencoumans/2177953282" title="Mobs"><img src="http://farm3.static.flickr.com/2052/2177953282_c17e509f60_t.jpg" alt="Mobs" title="Mobs" class=" flickr-photo-img" height="74" width="100" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2177161895" title="Mobs"><img src="http://farm3.static.flickr.com/2410/2177161895_d9e89fb4eb_t.jpg" alt="Mobs" title="Mobs" class=" flickr-photo-img" height="74" width="100" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2177953380" title="Mobs"><img src="http://farm3.static.flickr.com/2280/2177953380_81886d7e10_t.jpg" alt="Mobs" title="Mobs" class=" flickr-photo-img" height="74" width="100" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2177161979" title="Mobs"><img src="http://farm3.static.flickr.com/2254/2177161979_b00474c4f3_t.jpg" alt="Mobs" title="Mobs" class=" flickr-photo-img" height="74" width="100" /></a>
</div>

	<p>The Mobs view reveals the statistical patterns in the chosed queries. It shows the most common metrics from each of the feeling, gender, age, weather and location attributes. </p>

	<h3>Metrics</h3>

<div style="img { float: left; }">
<a href="http://www.flickr.com/photos/jeroencoumans/2177162029" title="Metrics"><img src="http://farm3.static.flickr.com/2299/2177162029_41d4b2c8a2_m.jpg" alt="Metrics" title="Metrics" class=" flickr-photo-img" height="178" width="240" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2177953518" title="Metrics"><img src="http://farm3.static.flickr.com/2244/2177953518_f78cece349_m.jpg" alt="Metrics" title="Metrics" class=" flickr-photo-img" height="177" width="240" /></a>
</div>

	<p>The Metrics views shows statistical anomalies of the various attributes, the traits that best distinguish the chosen query from the global average. Like the Mobs view, Metrics is divided in five axes.</p>

	<h3>Mounds</h3>

	<p><a href="http://www.flickr.com/photos/jeroencoumans/2179988103" title="Mounds"><img src="http://farm3.static.flickr.com/2337/2179988103_42c3b8da2a.jpg" alt="Mounds" title="Mounds" class=" flickr-photo-img" height="370" width="500" /></a></p>

	<p>The last view, Mounds, shows every feeling in the database, scaled and sorted in order of frequency. A small horizontal scrollbar can be used to traverse the complete database. </p>

	<p>In all of the movements views, the particles content is revealed by it's size, shape and color. The top 200 feelings are manually assigned colors that roughly correspond to the feeling (e.g. happy is bright, sad is dark). </p>

	<p>The end result is a fascinating look into the anonymized public feelings of people all over the world. People's most private feelings are public at the same time, particular while global, acquiring new meanings by being remixed into a large lump of similar data, becoming small and large pieces of customizable, collective art works. </p>

	<p>It's interaction design is also very refreshing. Instead of opting for your standard search queries, Jonathan has created a beautiful, animated, organic interface which reacts to your every movement, making it feel very lively and yet unobtrusive. Every time I open the applet, I feel myself drawn to all the floating particles, endlessly combining options and diving deeper. This is without a doubt a very addictive, playful interface which is at the same time very efficient at unlocking the power of the underlying database. It's not very intuitive and definitely requires some instructions or learning before opening it, but it's a small learning curve and is well worth the trouble. </p>

	<p>The interface is built as a Java applet, and all visualisations are done via the Open Source <a href="http://www.processing.org">Processing</a> scripting language. While the applet is obviously the most important aspect, the creators also added some social features. There's a gallery which allows you to save interesting images and send them by mail. It also shows the most sent, most saved and featured "montages" as they're called, and thus provides a sort of best-of. </p>

<div style="img { float: left; }">
<a href="http://www.flickr.com/photos/jeroencoumans/2180857164" title="I feel those weirdos are actually an asset to college life"><img src="http://farm3.static.flickr.com/2174/2180857164_4695389756_m.jpg" alt="I feel those weirdos are actually an asset to college life" title="I feel those weirdos are actually an asset to college life" class=" flickr-photo-img" height="172" width="240" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2180067665" title="I feel free"><img src="http://farm3.static.flickr.com/2359/2180067665_8a01c99724_m.jpg" alt="I feel free" title="I feel free" class=" flickr-photo-img" height="172" width="240" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2180856602" title="I really feel something special when were together"><img src="http://farm3.static.flickr.com/2066/2180856602_02725f62cc_m.jpg" alt="I really feel something special when were together" title="I really feel something special when were together" class=" flickr-photo-img" height="174" width="240" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2180067113" title="I feel like that sometimes"><img src="http://farm3.static.flickr.com/2242/2180067113_510c8c45d7_m.jpg" alt="I feel like that sometimes" title="I feel like that sometimes" class=" flickr-photo-img" height="173" width="240" /></a>
<a href="http://www.flickr.com/photos/jeroencoumans/2180066799" title="I feel so naughty"><img src="http://farm3.static.flickr.com/2005/2180066799_54418bcaa6_m.jpg" alt="I feel so naughty" title="I feel so naughty" class=" flickr-photo-img" height="173" width="240" /></a>
</div>

	<p>Last but not least, We Feel Fine also provides an <a href="http://www.wefeelfine.org/api.html">API</a>, which allows you to build query its database and build mash-ups. Strangely enough, the first mashup has yet to appear, as a quick search yielded no results. </p>

	<h3>Other sources</h3>

	<p>There's an interesting <a href="http://www.netmag.co.uk/zine/discover-interview/the-brains-behind-wefeelfine-org">interview with Jonathan Harris</a> on the efforts and thougths that went into We Feel Fine, and the rationale between the particle system, which is the metaphor behind most of the movements. Also, don't miss the excellent presentation Jonathan did at TED: <a href="http://www.ted.com/talks/view/id/144">Jonathan Harris: The Web's secret storie</a>, which gives a very nice overview of the complete application and the philosophy behind it. </p>

	<p></p><img src="http://feeds.feedburner.com/~r/JeroenCoumansBlog/~4/213894355" height="1" width="1" />]]></description>
      <pubDate>Fri, 11 Jan 2008 13:37:04 -0800</pubDate>
      <guid>http://virb.com/1629900533970680/posts/text/411080</guid>
    </item>
  </channel>
</rss>
