<?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>eric.jain.name &#187; Review</title>
	<atom:link href="http://eric.jain.name/tags/review/feed/" rel="self" type="application/rss+xml" />
	<link>http://eric.jain.name</link>
	<description>Eric Jain&#039;s Blog</description>
	<lastBuildDate>Mon, 26 Apr 2010 18:40:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Blist</title>
		<link>http://eric.jain.name/2008/02/12/blist/</link>
		<comments>http://eric.jain.name/2008/02/12/blist/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 07:38:10 +0000</pubDate>
		<dc:creator>Eric Jain</dc:creator>
				<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://eric.jain.name/2008/02/12/blist/</guid>
		<description><![CDATA[Blist is an interesting cross between a spreadsheet application and an interface to a proper database. The goal (I believe) is to allow mere mortals to create and share simple databases on the Web.

Upon logging in and creating a &#8220;blist&#8221;, you are presented with a spreadsheet-like view. You then drag and drop data types onto [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blist.com/">Blist</a> is an interesting cross between a spreadsheet application and an interface to a proper database. The goal (I believe) is to allow mere mortals to create and share simple databases on the Web.</p>
<p><span id="more-61"></span></p>
<p>Upon logging in and creating a &#8220;blist&#8221;, you are presented with a spreadsheet-like view. You then drag and drop data types onto the spreadsheet to create columns.</p>
<p><img alt="Screenshot" src="/2008/02/12/blist/screenshot.png"/></p>
<p>&#8220;Lenses&#8221; can be created to get non-tabular (and filtered) views of your data. Data can be entered directly both in the table or in the &#8220;lense&#8221; views. There are options to share and discuss &#8220;blists&#8221; &#8212; however these don&#8217;t seem to be implemented yet.</p>
<p>Blist is still in a very early stage. Following are some comments, based on my initial impression.</p>
<h3>Neat!</h3>
<p>In addition to the standard data types (text, numbers, dates etc) there are lots of unusual but useful data types such as email addresses, images, and star ratings.</p>
<p>Columns (unlike in a normal spreadsheet) can be set to allow multiple values in a single &#8220;cell&#8221; (possible, but cumbersome to implement with a normal database).</p>
<p>You can easily create &#8220;custom types&#8221; a.k.a. &#8220;pick lists&#8221; or enumerations.</p>
<p>It is possible to group/nest columns one level deep, creating a &#8220;blist-in-a-blist&#8221;.</p>
<p>Blist (unlike a normal database) doesn&#8217;t prevent invalid values in fields that expect a certain format. But (unlike a normal spreadsheet) invalid values are highlighted.</p>
<h3>Suggestions&#8230;</h3>
<p>If non-technical users are the main audience, it may be worth thinking about making the interface less intimidating. Too many buttons and controls!</p>
<p>Features that haven&#8217;t been implemented yet would probably better be hidden from view. It&#8217;s frustrating to not know if a button is disabled because you&#8217;re in the wrong mode, or because it isn&#8217;t implemented yet&#8230;</p>
<p>Support for undoing actions (and fewer prompts).</p>
<p>Support for changing the data type of a column (e.g. from number to string).</p>
<p>There is a nice calendar control for entering dates. Unfortunately it can&#8217;t be bypassed &#8212; if you want to enter an old date you need to go back in time month by month&#8230; The money data type is nice, too, but seems to be USD only.</p>
<p>Some of the data types muddle the distinction between data type and display. For example, is a checkbox really a different data type than a boolean &#8212; or is it just another way to display boolean values?</p>
<p>Help, Firefox eats all my memory! (May be an issue with Flash?)</p>
<p>I bet a geo-location data type and map view is already being worked on&#8230;</p>
<p>If the query builder showed a preview of the results, this would save some tedious back and forth when building queries. Speaking of search: Where is the quick search?</p>
<p>Should be able to link blists to each other (one of the killer features of relational databases)!</p>
<p>Support copy-pasting single (and multiple) cells.</p>
<p>Finally, there is a typo in the &#8220;downloading Lenss&#8221; status message :-)</p>
<h3>Conclusion</h3>
<p>While Blist isn&#8217;t the first effort to do spreadsheets or databases on the Web (think <a href="http://docs.google.com/">Google Spreadsheet</a> or <a href="http://www.freebase.com/">Freebase</a>), the way it combines the best features from both worlds seems new (to me, at least).</p>
<p>Will be interesting to see how the &#8220;social&#8221; features are implemented &#8212; and of course if their infrastructure manages to scale (especially once they enable the data import feature and people start dumping existing collections into Blist)!</p>
<div id="2008-02-20" style="font-size: smaller">
<h3 style="color: red">Update (February 20, 2008)</h3>
<p>Some more suggestions regarding the <a href="http://blog.blist.com/index.php/2008/02/20/new-features-excel-import-sharing-charts-search/">features added in the latest release</a>:</p>
<ul>
<li>Import: Support tab-delimited files in addition to CSV? Auto-detect e.g. numeric columns? Support creating custom types during import? Need to know a bit more than &#8220;There was a problem uploading your file&#8221; if something goes wrong!</li>
<li>Charts: This will be useful once aggregates are supported! Can the generated charts be copy-pasted into e.g. PowerPoint?</li>
<li>Search: Don&#8217;t need substring matches &#8212; but more speed! Highlight matches? Support for multiple search terms? Searches across several blists?</li>
<li>Sharing: Will there be a way to make blists public, and link to them?</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eric.jain.name/2008/02/12/blist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data and Reality</title>
		<link>http://eric.jain.name/2006/02/06/data-and-reality/</link>
		<comments>http://eric.jain.name/2006/02/06/data-and-reality/#comments</comments>
		<pubDate>Mon, 06 Feb 2006 18:08:57 +0000</pubDate>
		<dc:creator>Eric Jain</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://eric.jain.name/2006/02/06/data-and-reality/</guid>
		<description><![CDATA[Brief review of Data and Reality by William Kent. This book was written in 1978, but is still remarkably relevant in many ways.

After going through all the different terms that people use when talking about data (some of these terms have fallen out of fashion, others are still in use), Kent points out inconsistencies and [...]]]></description>
			<content:encoded><![CDATA[<p>Brief review of <a href="http://www.amazon.com/gp/product/1585009709">Data and Reality</a> by William Kent. This book was written in 1978, but is still remarkably relevant in many ways.</p>
<p><span id="more-15"></span></p>
<p>After going through all the different terms that people use when talking about data (some of these terms have fallen out of fashion, others are still in use), Kent points out inconsistencies and limitations of the relational and hierarchical data models:</p>
<blockquote><p>the data processing community has evolved a number of models in which to express descriptions of reality. These models are highly structured, rigid, and simplistic, being amenable to economic processing by computer. [...] Some members of that community have been so overwhelmed by the success of a certain technology for processing data that they have confused this technology with the natural semantics of information.</p></blockquote>
<p>Of course Kent is full of understanding for those poor, misguided souls:</p>
<blockquote><p>The builders and users of today&#8217;s commercial systems quite justifiably want to avoid cluttering their systems with anything that may impair efficiency and productivity. The argument that this new approach will make the overall management of data more productive in the long run has yet to be convincingly demonstrated to them.</p></blockquote>
<p>He predicts that data integration will be the killer application for a more sophisticated data model:</p>
<blockquote><p>The need for a more descriptive model will only gradually achieve general recognition. It will come from the headaches of trying to crunch together the diverse formats and data structures used by growing families of applications operating on the same integrated data base.</p></blockquote>
<p>Kent then goes on to outline an ideal data model (graph-based). Nevertheless he manages to remain realistic:</p>
<blockquote><p>Perhaps it is inevitable that tools and theories never quite match. There are some opposite qualities inherent in them. [...] Thus the truth of things may be this: useful things get done by tools which are an amalgam of fragments and theories. Those are the kinds of tools whose production and maintenance expense can be justified. Theories are helpful to gain understanding, which may lead to the better design of better tools.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://eric.jain.name/2006/02/06/data-and-reality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emotional Design</title>
		<link>http://eric.jain.name/2006/01/23/emotional-design/</link>
		<comments>http://eric.jain.name/2006/01/23/emotional-design/#comments</comments>
		<pubDate>Mon, 23 Jan 2006 03:38:35 +0000</pubDate>
		<dc:creator>Eric Jain</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://eric.jain.name/2006/01/23/emotional-design/</guid>
		<description><![CDATA[Brief review of Emotional Design. Donald Norman uses this book to expand a bit on the well-known The Design of Everyday Things. In particular, the new book discusses some of the non-rational aspects of design that the previous book ignores. But right from the beginning the author cautions that
In the long run, simple style with [...]]]></description>
			<content:encoded><![CDATA[<p>Brief review of <a href="http://www.amazon.com/gp/product/0465051367">Emotional Design</a>. Donald Norman uses this book to expand a bit on the well-known <span class="nobr"><a title="Visit page outside Confluence" href="http://www.amazon.com/gp/product/0465067107">The Design of Everyday Things</a></span>. In particular, the new book discusses some of the non-rational aspects of design that the previous book ignores. <span id="more-8"></span>But right from the beginning the author cautions that</p>
<blockquote><p>In the long run, simple style with quality construction and efficient performance wins. So a business that [creates] web sites for shipping, commerce, or information, would be wise to stick to the fundamentals. [...] Only for products whose goal is &#8220;entertainment, or style, or perhaps enhancement of a personal image&#8221; does fashion come into play. The design moust match the target audience and &#8220;it is probably necessary to have multiple versions of the design for different market segments&#8221; and &#8220;rapid changes in style and appearance&#8221; are required.</p></blockquote>
<p>Three levels of design are distinguished:</p>
<ol>
<li>visceral</li>
<li>behavorial</li>
<li>reflective</li>
</ol>
<p><strong>Visceral design:</strong></p>
<p>People are often willing to overlook shortcomings if a product is pleasant to use.</p>
<blockquote><p>The visceral level is the &#8220;look and feel&#8221; that makes people want to own your product, regardless of whether they need it or not.</p></blockquote>
<p><strong>Behavorial design:</strong></p>
<p>At the behavorial level &#8220;appearance doesn&#8217;t really matter [...] performance does&#8221;. Design at this level means talking into consideration not only function, but also understandability and usability.</p>
<p>First, it is important to recognize that</p>
<blockquote><p>tasks and activities are not well supported by isolated features</p></blockquote>
<p>so check-list based development won&#8217;t do – you need to understand just how people will use a product.</p>
<p>There are two kinds of product development: evolution and innovation.</p>
<p>Asking potential customers for their views is not an effective way to innovate:</p>
<blockquote><p>Focus groups, questionnaires, and surveys are poor tools for learning about behavior, for they are divorced from actual use. Most behavior is subconcious and what people actually do can be quite different from what they think they do. We humans like to think that we know why we act as we do, but we don&#8217;t, however much we like to explain our actions.</p></blockquote>
<blockquote><p>People have said they would really like some products that have failed in the marketplace. Similarly, they have said they were simply not interested in products that went on to become huge market successes.</p></blockquote>
<p>Evolutionary development, too, is best done by watching people, as &#8220;people find it difficult to articulate their real problems&#8221;. Also, many people blame themselves for problems they have.</p>
<p>Regarding usability:</p>
<blockquote><p>[The product] should not require years of dedicated practice. New items appear every week, but who has time or energy to spend the time required to learn each one? Bad design is a frequent cause of error, often unfairly blamed on users</p></blockquote>
<blockquote><p>designing for the handicapped, the hard of hearing or seeing, or those less agile than average invariably makes an object better for everyone.</p></blockquote>
<p>Why do so many designs fail?</p>
<ul>
<li>Engineers tend to focus upon technology, putting into a product whatever special features they themselves prefer.</li>
<li>Designers like to make sophisticated use of images and metaphers that win prizes in design compititions but create products that inaccessible to users.</li>
<li>Managers focus upon making sure that each division in a company receives the recognition its political power deserves.</li>
</ul>
<blockquote><p>Good behavorial design has to be a fundamental part of the design process from the very start; it cannot be adopted once the product has been completed.</p></blockquote>
<p>Therefore it is</p>
<blockquote><p>important to have a rapid, iterative development process. The prototype is tested with users right from the beginning.</p></blockquote>
<p><strong>Reflective design:</strong></p>
<p>This is a more subtle level of design that not all people may be able to appreciate – much like good movies&#8230;</p>
<blockquote><p>The best designs come from following a cohesive theme throughout, with a clear vision and focus. Usually, such designs are driven by the vision of one person.</p></blockquote>
<blockquote><p>If you want a successful product, test and revise. If you want a great product, one that can change the world, let it be done by someone with a clear vision. The latter presents more financial risk, but it is the only path to greatness.</p></blockquote>
<p>Another issue is customization, which the author invariably fails to find useful:</p>
<blockquote><p>The things I really want to customize [...] can&#8217;t be customized. [...]</p></blockquote>
<blockquote><p>If something is so complex that it requires the addition of multiple &#8220;preferences&#8221; it is probably too complex to use.</p></blockquote>
<blockquote><p>Proper customization comes through combining multiple simple pieces. I don&#8217;t customize my pen; I do customize how I use it.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://eric.jain.name/2006/01/23/emotional-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Information Visualization</title>
		<link>http://eric.jain.name/2006/01/23/information-visualization/</link>
		<comments>http://eric.jain.name/2006/01/23/information-visualization/#comments</comments>
		<pubDate>Mon, 23 Jan 2006 03:34:17 +0000</pubDate>
		<dc:creator>Eric Jain</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://eric.jain.name/2006/01/23/information-visualization/</guid>
		<description><![CDATA[Brief review of Information Visualization by Colin Ware. This is a textbook with a great amount of detail on the physics, biology and psychology behind visual perception.
 The main purpose of visualization is to help people detect patterns – though the author cautions that people are quite capable of seeing patterns where there are none&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Brief review of <a href="http://www.amazon.com/gp/product/1558608192">Information Visualization</a> by Colin Ware. This is a textbook with a great amount of detail on the physics, biology and psychology behind visual perception.</p>
<p><span id="more-7"></span> The main purpose of visualization is to help people detect patterns – though the author cautions that people are quite capable of seeing patterns where there are none&#8230; The author also cautions against overuse of visual techniques:</p>
<blockquote><p>Natural language is the most elaborate, complete and widely shared system of symbols that we have available. For this reason alone, it is only when there is a clear advantage that visual techniques are preferred.</p></blockquote>
<p>Some practical advice extracted from the book.</p>
<ul>
<li>Don&#8217;t use grayscale values to color categories in a graph.</li>
<li>Blue areas focus behind red areas, for most people. This can be used to create an illusion of depth. It can also be used to make text unreadable&#8230;</li>
<li>Colors allow an additional three dimensions to be visualized (rgb!)</li>
<li>Fast movements or sudden appearance of items in the visual periphery attract attention – which may or may not be intended.</li>
<li>Multi-dimensional, discrete data can be encoded by spatial position of a &#8220;glyph&#8221;, color, shape, orientation, texture, motion or frequency (e.g. blinking).</li>
<li>Items can be associated visually by making use of proximity, similarity (see previous point), symmetric or continuous arrangement, or enclosure (e.g. in windows or Venn-diagrams).</li>
<li>Animation can be useful though &#8220;the kinds of animated critters that are starting to crawl and hop over web pages are often unnecessary and distracting. Just as elegance is a virtue in static diagrams, so it is in diagrams that use animation.&#8221;</li>
<li>People are poor at remembering images, but good at recognizing previously seen images.</li>
<li>Large collections of images can be scanned faster by flashing the images in rapid succession (up to 16 images/s) than by looking through thumbnails (requires refocussing, only 3-4 images/s).</li>
<li>Display numbers in an object view rather than in tables, if there is a natural or metaphorical mapping to a physical object.</li>
<li>For displaying 3D surfaces use a single light source that is located above (the brain assumes this!), at an infinite distance. Make shadows soft, and use textures.</li>
<li>Using three dimensions may increase the maximum complexity in a tree or graph that can be understood.</li>
<li>Most people get sick in virtual reality simulators when they move their head from side to side while moving.</li>
<li>Flowcharts are less suitable than natural language or pseudocode for helping people understand processes, because they require the brain to perform an additional translation step.</li>
<li>Diagrams on the other hand can help people understand relationships.</li>
<li>Data input always has a speed-accuracy trade off. This means that applications that are tolerant of small errors allow people to work faster.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eric.jain.name/2006/01/23/information-visualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Producing Open Source Software</title>
		<link>http://eric.jain.name/2006/01/23/producing-open-source-software/</link>
		<comments>http://eric.jain.name/2006/01/23/producing-open-source-software/#comments</comments>
		<pubDate>Mon, 23 Jan 2006 03:10:54 +0000</pubDate>
		<dc:creator>Eric Jain</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://eric.jain.name/2006/02/05/producing-open-source-software/</guid>
		<description><![CDATA[Here are some notes on the book Producing Open Source Software. The book does an excellent job of explaining how open source projects work and how they deal with typical problems.

How to motivate people to contribute to your project?

People should feel that their connection to a project, and influence over it, is directly proportional to [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some notes on the book <a href="http://amazon.com/gp/product/0596007590">Producing Open Source Software</a>. The book does an excellent job of explaining how open source projects work and how they deal with typical problems.</p>
<p><span id="more-5"></span></p>
<h3>How to motivate people to contribute to your project?</h3>
<blockquote><p>
People should feel that their connection to a project, and influence over it, is directly proportional to their contributions.
</p></blockquote>
<blockquote><p>
As slow and cumbersome as public discussions can be, they&#8217;re almost always preferable in the long run. Making important decisions in private is like spraying contributor repellent on your project. No serious volunteer would stick around for long in an environment where a secret council makes all the big decisions.
</p></blockquote>
<p>Also, first impressions count. The project web site should make it clear what the project is about and what the status of the project is. Downloading a project snapshot and getting started should not require a lot of fiddling around.</p>
<h3>How to get people to work together?</h3>
<blockquote><p>
One of the best ways to foster a productive development community is to get people looking at each others&#8217; code.
</p></blockquote>
<h3>What infrastructure is required?</h3>
<p>The minimum infrastructure almost any project will need is:</p>
<ul>
<li>a web site</li>
<li>archived and searchable mailing lists</li>
<li>a version control system containing everything except generated files</li>
<li>a bug tracking system</li>
<li>some kind of real-time chat</li>
</ul>
<p>If you also have a Wiki take care of duplicate content and inconsistent style:</p>
<blockquote><p>
have editorial standards, and demonstrate them not only by posting them, but by editing pages to adhere to them.
</p></blockquote>
<p>This is important because:</p>
<blockquote><p>
wikis will amplify any failings in their original material.
</p></blockquote>
<p>Proper discussions should take place on mailing lists, not in the bug tracker.</p>
<h3>Who makes the decisions?</h3>
<p>Most projects either have a &#8220;benevolent dictator&#8221; or a some kind of decentralized decision making process. &#8220;Benevolent&#8221;, because:</p>
<blockquote><p>
quality developers won&#8217;t stay around unless they have some influence on the project&#8217;s direction
</p></blockquote>
<blockquote><p>
Forks, are the reason there are no true dictators in free software projects.
</p></blockquote>
<p>The &#8220;benevolent dictator&#8221; is often the founder of the project:</p>
<blockquote><p>
if it&#8217;s simply obvious to everyone who should be the [benevolent dictator], then that&#8217;s the way to go. But if no candidate for [benevolent dictator] is immediately obvious, then the project should probably use a decentralized decision-making process
</p></blockquote>
<blockquote><p>
The [benevolent dictator] position is neither acquired nor held by virtue of intimidating coding skills. What is important is experience and overall design  sense &mdash; not necessarily the ability to produce good design on demand, but the ability to recognize good design, whatever its source.
</p></blockquote>
<blockquote><p>
As projects get older, they tend to move away from the benevolent dictatorship model and toward more openly democratic systems.
</p></blockquote>
<p>How does this work?</p>
<blockquote><p>
Most conversation in a project is on technical topics [...] Consensus-based governance works well because it blends seamlessly with the technical discussion itself. By the end of a discussion, there is often general agreement on what course to take.
</p></blockquote>
<p>Consensus has its limits, though:</p>
<blockquote><p>
Consensus merely means an agreement that everyone is willing to live with.
</p></blockquote>
<blockquote><p>
When Consensus Cannot Be Reached, Vote
</p></blockquote>
<p>But voting should be rare:</p>
<blockquote><p>
Don&#8217;t think of voting as a great way to resolve debates. It isn&#8217;t. It ends discussion, and thereby ends creative thinking about the problem. As long as discussion continues, there is the possibility that someone will come up with a new solution everyone likes. This happens surprisingly often
</p></blockquote>
<p>Better decisions can be made by using &#8220;approval voting&#8221;, where each participant can vote for several proposals.</p>
<p>Who gets to vote? Use an existing distinction, e.g. everyone with commit rights.</p>
<h3>How to participate as a company?</h3>
<p>First of all, &#8220;play by the same rules as everyone else&#8221;.</p>
<blockquote><p>
&#8220;credibility is a valuable currency to have in technical discussions: it&#8217;s immunization against having one&#8217;s motives questioned later. In the heat of argument, people will sometimes look for non-technical ways to win the battle.&#8221;
</p></blockquote>
<h3>What about communication skills?</h3>
<blockquote><p>
The ability to write clearly is perhaps the most important skill one can have in an open source environment.
</p></blockquote>
<p>Some tips:</p>
<blockquote><p>
Write in complete sentences, capitalizing the first word of each sentence, and use paragraph breaks where needed.
</p></blockquote>
<blockquote><p>
In IRC or similarly ephemeral forums, it&#8217;s generally okay to leave out capitalization, use compressed forms of common expressions, etc.
</p></blockquote>
<p>Always take care to choose a good subject line in e-mail messages.</p>
<p>Observation on the communication style of the typical open source project participant:</p>
<blockquote><p>
No greeting, no sign-off other than his name, and the message itself is just a series of questions phrased as compactly as possible. [...] A degree of terseness that would be unacceptable in normal social interactions is simply the default for free software hackers.
</p></blockquote>
<p>Nevertheless you should consider that</p>
<blockquote><p>
by being sensitive to the tone of your own writing, you can have a surprising amount of influence over how others feel, to the ultimate benefit of the project.
</p></blockquote>
<h3>How to keep discussions on topic?</h3>
<blockquote><p>
It is unfortunately very easy, and all too typical, for constructive discussions to lapse into destructive flame wars.
</p></blockquote>
<p>Bad behavior should be &#8220;consistently called out&#8221; but:</p>
<blockquote><p>
never make the meta-discussion the main topic. It should always be an aside, a brief preface to the main portion of your response. Point out in passing that &#8220;we don&#8217;t do things that way around here,&#8221; but then move on to the real content, so that you&#8217;re giving people something on-topic to respond to.
</p></blockquote>
<p>Regarding &#8220;rudeness&#8221;:</p>
<blockquote><p>
One of the defining characteristics of open source culture is its distinctive notions of what does and does not constitute rudeness. While the conventions described below are not unique to free software development, nor even to software in general &mdash; they would be familiar to anyone working in mathematics, the hard sciences, or engineering disciplines.
</p></blockquote>
<blockquote><p>
Technical criticism, even when direct and unpadded, is not rude. Indeed, it can be a form of flattery: the critic is saying, by implication, that the target is worth taking seriously, and is worth spending some time on.&#8221; Also: Blunt, unadorned questions, are not rude either. Questions that in other contexts might seem cold, rhetorical, or even mocking, are often intended seriously, and have no hidden agenda other than eliciting information as quickly as possible.
</p></blockquote>
<p>How to deal with truly rude people:</p>
<blockquote><p>
comment on the rudeness the first time, and from then on, either ignore them or treat them the same as anyone else. If they continue being rude, they will usually make themselves so unpopular as to have no influence on others in the project, so they are a self-containing problem.
</p></blockquote>
<p>Discussions are unproductive when they are not concrete enough:</p>
<blockquote><p>
consensus is hardest to achieve in technical questions that are simple to understand and easy to have an opinion about [...] People can participate in those arguments forever, because there are no qualifications necessary for doing so and no clear ways to decide (even afterward) if a decision was right or wrong
</p></blockquote>
<p>There are also a few &#8220;holy war&#8221; topics on which it is unlikely that agreement can ever be reached. Simply saying &#8220;Can we please just drop it?&#8221; will not help. Consider giving up unless you really care, but remember that &#8220;giving up is effective only when done gracefully&#8221; (i.e. don&#8217;t say things like &#8220;I never though this was a good idea anyway&#8221;). If you feel that giving in would delay the project too much, justify your choice as &#8220;practical&#8221;, rather than as the &#8220;academic best&#8221;.</p>
<p>Once in a while there are &#8220;difficult people&#8221;, i.e. people &#8220;who are not overtly rude, but who manipulate or abuse the project&#8217;s processes in a way that ends up costing other people time and energy, yet do not bring any benefit to the project.&#8221; Before you attempt to kick anyone out of a project, be sure to gather evidence and get support from other participants, or your actions will backfire.</p>
<h3>How to handle growth?</h3>
<blockquote><p>
The more a project grows, the more important this sort of consistency becomes. Consistency means that everywhere people look, they see the same patterns being followed, so they know to follow those patterns themselves. This, in turn, reduces the number of questions they need to ask. The burden of having a million readers is no greater than that of having one; scalability problems start to arise only when a certain percentage of those readers ask questions. As a project grows, therefore, it must reduce that percentage by increasing the density and accessibility of information, so that any given person is more likely to find what she needs without having to ask.
</p></blockquote>
<h3>How to deal with versioning?</h3>
<blockquote><p>
Those three labels &mdash; Alpha, Beta, and RC &mdash; are pretty widely known now, and I don&#8217;t recommend using any of the others, even though the others might at first glance seem like better choices [...] But people who install software from releases are already familiar with the big three, and there&#8217;s no reason to do things gratuitously differently from the way everyone else does them.
</p></blockquote>
<p>Starting from the 1.0 release it makes sense to distinguish:</p>
<ul>
<li>major releases: new features, may be backwards-incompatible</li>
<li>minor releases: some new features</li>
<li>micro releases: bug fixes, small improvements</li>
</ul>
<p>If you don&#8217;t want to halt all development while a release is being prepared you will need to <a href="http://cvsbook.red-bean.com/cvsbook.html#Branches">branch</a>.</p>
<h3>How to deal with politics?</h3>
<blockquote><p>
The distaste for politics is especially strong in engineers because engineers are bought into the idea that some solutions are objectively superior to others. Thus, when someone acts in a way that seems motivated by outside considerations &mdash; say, the maintenance of his own position of influence, the lessening of someone else&#8217;s influence, outright horse-trading, or avoiding hurting someone&#8217;s feelings &mdash; other participants in the project may get annoyed.
</p></blockquote>
<p>But &#8220;no one is above politics&#8221; because &#8220;politics is simply what happens when people disagree, and successful projects are those that evolve political mechanisms for managing disagreement constructively.&#8221;</p>
<p>If you delegate a task, always follow up!</p>
<blockquote><p>
If someone does not improve in response to criticism, the solution is not more or stronger criticism. The solution is for the group to remove that person from the position of incompetence, in a way that minimizes hurt feelings as much as possible
</p></blockquote>
<blockquote><p>
Watch out for participants who try to stake out exclusive ownership of certain areas of the project, and who seem to want to do all the work in those areas, to the extent of aggressively taking over work that others start. Such behavior may even seem healthy at first. After all, on the surface it looks like the person is taking on more responsibility, and showing increased activity within a given area. But in the long run, it is destructive.
</p></blockquote>
<p>Finally, remember to credit people, but always be specific.</p>
]]></content:encoded>
			<wfw:commentRss>http://eric.jain.name/2006/01/23/producing-open-source-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Information Dashboard Design</title>
		<link>http://eric.jain.name/2006/01/02/information-dashboard-design/</link>
		<comments>http://eric.jain.name/2006/01/02/information-dashboard-design/#comments</comments>
		<pubDate>Mon, 02 Jan 2006 04:06:04 +0000</pubDate>
		<dc:creator>Eric Jain</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://eric.jain.name/2006/01/02/information-dashboard-design/</guid>
		<description><![CDATA[Brief review of Information Dashboard Design : The Effective Visual Communication of Data by Stephen Few.

What is a &#8220;dashboard&#8221;?
A dashboard is a visual display of the most important information needed to achieve one or more objectives; consolidated and arranged on a single screen so the information can be monitored at a glance.
The author identifies a [...]]]></description>
			<content:encoded><![CDATA[<p>Brief review of <a href="http://www.amazon.com/gp/product/0596100167/">Information Dashboard Design : The Effective Visual Communication of Data</a> by Stephen Few.</p>
<p><span id="more-13"></span></p>
<p>What is a &#8220;dashboard&#8221;?</p>
<blockquote><p>A dashboard is a visual display of the most important information needed to achieve one or more objectives; consolidated and arranged on a single screen so the information can be monitored at a glance.</p></blockquote>
<p>The author identifies a wide range of uses for dashboards ranging from sales to server monitoring. Both Confluence and Jira have simple dashboards. Dashboards could also be useful for keeping track of web server or annotation statistics.</p>
<p>There is a lot of advice on design issues beyond dashboards:</p>
<blockquote><p>Customers are expert in knowing what they need to accomplish, but not in knowing how software ought to be designed to support their needs. Allowing customers to design software through feature requests is the worst form of disaster by committee.</p></blockquote>
<p>Three kinds of dashboards are distinguished:</p>
<ul>
<li>strategic (read only summaries)</li>
<li>analytical (drill down summaries) </li>
<li>operation (real-time alerts)</li>
</ul>
<p>One of the main tasks all dashboards must support are comparisons across time or related categories.</p>
<p>There are quite a few dashboard products in the market. The author doesn&#8217;t seem to be enthusiastic about any of them and uses plenty of screenshots to illustrate his points.</p>
<blockquote><p>Another common problem on the dashboards that I find on vendor web sites is the abundance of useless decoration. They either hope that we will be drawn in by the artistry or assume that the decorative flourishes are necessary to entertain us. I assure you, however, that even people who enjoy the decoration upon first sight will grow weary of it in a few days. [...] Blank space is better than meaningless decoration.</p></blockquote>
<p>Other pitfalls include:</p>
<ul>
<li>data doesn&#8217;t fit on a single screen</li>
<li>not enough context information is given to help determine if data is problematic or not</li>
<li>excessive detail which slows down comprehension (decimal digits etc)</li>
<li>important data is not highlighted</li>
</ul>
<p>There is a chapter on the basics of visual perception because:</p>
<blockquote><p>You don&#8217;t need to be a graphic artist to design an attractive dashboard, but you do need to understand a few basic principles about visual perception.</p></blockquote>
<p>For example, one should use soft colors unless one wants to focus attention on something. Colors should variate in intensity rather than hue to ensure that people who have problems with color vision can make the distinctions, too. Characteristics such as size or shape are suitable for representing either qualitative or quantitative data to different degrees.</p>
<p>To clean up a dashboard the author recommends going through the following steps:</p>
<ol>
<li>Reduce the amount of &#8220;non-data&#8221; pixels. This includes 3D effects, unnecessary grid lines in graphs, borders, background decorations and color gradients.</li>
<li>De-emphasize remaining &#8220;non-data&#8221; pixels. Reduce thickness, tone down color etc.</li>
</ol>
<p>Another issue are navigation items:</p>
<blockquote><p>place [navigation items] in an out-of-the-way location such as the bottom-right corner of the screen and mute them visually, so they won&#8217;t compete with the data for attention</p></blockquote>
<p>Instructions should be made available through pop-ups rather than be displayed directly. This is what we do in the niceprot view. Also, general help is not accessed during normal use and should therefore be reduced to a single help link.</p>
<p>The author is critical of many frequently used chart types such as gauges (waste of space), pie charts (difficult to make quantitative comparisons) and 3D graphs (for non-3D data).</p>
<p>Regarding bar and line graphs:</p>
<ul>
<li>Don&#8217;t use line graphs to display data along a nominal (e.g. category) or ordinal (e.g. rank) scale, only for intervals (e.g. time), unless grouped (e.g. by month).</li>
<li>Use stacked bar graphs only when the emphasis is on the sum, not to visualize the differences within.</li>
</ul>
<p>Icons can also be useful, but all you usually need are:</p>
<ul>
<li>alert</li>
<li>up/down</li>
<li>on/off</li>
</ul>
<p>Meaningful comparisons should be encouraged and meaningless comparisons discouraged through spatial separation and colors.</p>
<p>The book ends with several case studies, showing both good and bad solutions.</p>
]]></content:encoded>
			<wfw:commentRss>http://eric.jain.name/2006/01/02/information-dashboard-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
