<?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>HCoder.org &#187; books</title>
	<atom:link href="http://hcoder.org/tag/books/feed/" rel="self" type="application/rss+xml" />
	<link>http://hcoder.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 15 Apr 2012 21:43:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Book summary: Eating Animals</title>
		<link>http://hcoder.org/2012/04/09/book-summary-eating-animals/</link>
		<comments>http://hcoder.org/2012/04/09/book-summary-eating-animals/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 20:13:01 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[sustainability]]></category>
		<category><![CDATA[vegetarian]]></category>
		<category><![CDATA[vegetarianism]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1347</guid>
		<description><![CDATA[This is my summary of the book &#8220;Eating Animals&#8221; by Jonathan Safran Foer. Contrary to what the title may suggest, it&#8217;s not a &#8220;vegetarian book&#8221; defending some variant of the argument &#8220;animals are cute, don&#8217;t kill them&#8221;: it&#8217;s a book about factory farming (it&#8217;s true that one of the conclusions is that you essentially have [...]]]></description>
			<content:encoded><![CDATA[<p>This is my summary of the book &#8220;Eating Animals&#8221; by Jonathan Safran Foer. <em>Contrary to what the title may suggest, it&#8217;s not a &#8220;vegetarian book&#8221; defending some variant of the argument &#8220;animals are cute, don&#8217;t kill them&#8221;: it&#8217;s a book about factory farming</em> (it&#8217;s true that one of the conclusions is that you essentially have to go vegetarian to avoid factory farming meat, but this book is for anyone interested in how food is produced). Sadly I had to skip many interesting stories and data in order to give the summary some continuity.</p>
<p><strong>Edit:</strong> corrected statement &#8220;total collapse of all fished species in 50-100 years&#8221; to read &#8220;we have depleted large predatory fish communities worldwide by at least 90% over the past 50–100 years&#8221; (the article it linked had the second statement, not the first; although it does say &#8220;We conclude that today’s management decisions will determine whether we will enjoy biologically diverse, economically profitable fish communities 20 or 50 years from now, or whether we will have to look back on a history of collapse and extinction that was not reversed in time&#8221;). I think the original statement is true, but I couldn&#8217;t find a reference for it.</p>
<h2>Factory farming</h2>
<p>Factory farming (and industrial fishing) is a mindset: reducing production costs to the absolute minimum, ignoring or &#8220;externalising&#8221; costs such as environmental degradation, human disease or animal suffering. Nature becomes an obstacle to overcome.</p>
<p>Factory farming possibly accounts for more than 99% of all animals used for meat, milk or eggs. As for industrial fishing, <a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1636106/">we have depleted large predatory fish communities worldwide by at least 90% over the past 50–100 years</a> (see also <a href="http://www.ted.com/talks/sylvia_earle_s_ted_prize_wish_to_protect_our_oceans.html">Sylvia Earle&#8217;s TED talk</a>, not mentioned in the book but related). It doesn&#8217;t help that the so-called &#8220;bycatch&#8221; is actually <em>much</em> more than the actual fish: typically 80% to 90% (and up to around 98%), which is tossed back (dead) into the ocean.</p>
<h2>Diseases/shit</h2>
<p>There is scientific consensus that new viruses, which move between animals and humans, will be a major global threat into the foreseeable future. According to the <a href="http://en.wikipedia.org/wiki/WHO">WHO</a> the &#8220;<a href="http://who.int/bulletin/volumes/82/4/who%20news.pdf">World is ill-prepared for &#8216;inevitable&#8217; flu pandemic</a>&#8220;. The factory farm conditions encourage diseases in animals (some of them virtually unknown outside of factory farming), that <a href="http://aem.asm.org/content/67/12/5431.abstract">end up in the actual food in the supermarkets</a>. It&#8217;s even worse considering the animals are constantly fed with antibiotics (livestock gets almost 6 times more antibiotics than humans&#8230; if you trust the industry&#8217;s own numbers!), making the resulting diseases much harder to fight off for humans. The whole chapter 5 is filled with descriptions of filthy, dangerous and disgusting practices that are absolutely common and normal in (US, at least) factory farming.</p>
<p>Factory farming animal shit is a big problem both because of the quantity and for being so poorly managed: it kills wildlife and pollutes air, water, and land in ways <a href="http://www.nytimes.com/2003/05/11/us/neighbors-of-vast-hog-farms-say-foul-air-endangers-their-health.html?ex=1334116800&amp;en=ce0013a21d98ce76&amp;ei=5070">devastating to human health</a>. Its polluting strength is <a href="http://web.archive.org/web/20061206053152/http://www.bae.umn.edu/extens/ennotes/enwin95/manure.html">160 times greater than municipal sewage</a>, and yet there&#8217;s almost no waste-treatment infrastructure for farmed animals. Ignoring these problems are part of why factory farming is so &#8220;efficient&#8221;. The problem, of course, is not the shit in itself but the desire to eat so much meat and pay very little for it.</p>
<h2>Environment</h2>
<p>Simply put, someone who eats factory farmed animals regularly can&#8217;t call herself an environmentalist.</p>
<p>It takes 6 to 26 calories fed to an animal to produce 1 calorie of animal flesh (the vast majority of the food produced in the US is fed to animals). The UN special envoy of food called using 100 million tons of grain and corn a &#8220;crime against humanity&#8221;, but what about animal agriculture, which uses more than 700 million tons of grain and corn per year, much more than enough to feed the 1.4 billion humans in poverty?</p>
<p>The FAO/UN summarised in &#8220;<a href="ftp://ftp.fao.org/docrep/fao/010/a0701e/a0701e00.pdf">livestock&#8217;s long shadow — environmental issues and options</a>&#8221; (which has been <a href="http://blogs.alternet.org/patthomas/2010/03/24/livestock-climate-change-and-a-mediocre-media/">criticised</a> BTW!):</p>
<blockquote><p>The livestock sector emerges as one of the top two or three most significant contributors to the most serious environmental problems, at every scale from local to global. The findings of this report suggest that it should be a major policy focus when dealing with problems of land degradation, climate change and air pollution, water shortage and water pollution and loss of biodiversity. Livestock&#8217;s contribution to environmental problems is on a massive scale [...]</p></blockquote>
<h2>Factory farmer perspective</h2>
<p>Some interesting comments from a factory farmer (note that I don&#8217;t find them convincing, but there are some good points that need to be explained or considered when proposing alternatives to factory farming):</p>
<blockquote><p>In fact, we have a tremendous system. Is it perfect? No. [...] And if you find someone who tells you he has a perfect way to feed billions and billions of people, well, you should take a careful look. [...] If we go away from it, it may improve the welfare of the animal, it may even be better for the environment, but I don&#8217;t want to go back to [...] starving people.  [...] Sure, you could say that people should just eat less meat, but I&#8217;ve got news for you: people don&#8217;t want to eat less meat. [...] What I hate is when consumers act as if farmers want these things, when it&#8217;s consumers who tell farmers what to grow. They&#8217;ve wanted cheap food. We&#8217;ve grown it. [...] It&#8217;s efficient and that means it&#8217;s more sustainable.</p></blockquote>
<h2>Closing thoughts</h2>
<p>We shouldn&#8217;t kid ourselves about the number of ethical eating options. There isn&#8217;t enough nonfactory pork in the US to serve New York City. Any ethical-meat advocate who is serious is going to be eating a lot of vegetarian fare.</p>
<p>Ending factory farming will help prevent deforestation, curb global warming, reduce pollution, save oil reserves, lessen the burden on rural America, decrease human rights abuses, improve public health, and help eliminate the most systematic animal abuse in world history.</p>
<blockquote><p>A good number of people seem to be tempted to continue supporting factory farms while also buying meat outside that system when it is available. [...] Any plan that involves funnelling money to the factory farm won&#8217;t end factory farming [...] If anyone find in this book encouragement to buy some meat from alternative sources while buying factory farm meat as well, they have found something that isn&#8217;t here.</p></blockquote>
<h2>Other quotes</h2>
<blockquote><p>I can&#8217;t count the number of times that upon telling someone I am vegetarian, he or she responded by pointing out an inconsistency in my lifestyle or trying to find a flaw in an argument I never made (I have often felt that my vegetarianism matters more to such people than it does to me).</p></blockquote>
<blockquote><p>Virtually all of us agree that it matters how we treat animals and the environment, and yet few of us give much thought to our most important relationship to [them]. Odder still, those who <em>do</em> choose to act in accordance to these uncontroversial values by refusing to eat animals [...] are often considered marginal or even radical.</p></blockquote>
<blockquote><p>It might sound naive to suggest that whether you order a chicken patty or a veggie burger is a profoundly important decision. Then again, it certainly would have sounded fantastic if in the 1950s you were told that where you sat in a restaurant or on a bus could begin to uproot racism.</p></blockquote>
<blockquote><p>We can&#8217;t plead ignorance, only indifference [...] We are the ones of whom it will be fairly asked, <em>What did you do when you learned the truth about eating animals?</em></p></blockquote>
<blockquote><p>It shouldn&#8217;t be the consumer&#8217;s responsibility to figure out what&#8217;s cruel and what&#8217;s kind, what&#8217;s environmentally destructive and what&#8217;s sustainable. Cruel and destructive food products should be illegal. We don&#8217;t need the option of buying children&#8217;s toys made with lead paint, or aerosols with chlorofluorocarbons, or medicines with unlabelled side effects. And we don&#8217;t need the option of buying factory-farmed animals.</p></blockquote>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1347&amp;md5=9a03e8c11d27ae407355f2bca368ad3d" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2012/04/09/book-summary-eating-animals/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2012%2F04%2F09%2Fbook-summary-eating-animals%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Eating+Animals&amp;description=This+is+my+summary+of+the+book+%26%238220%3BEating+Animals%26%238221%3B+by+Jonathan+Safran+Foer.+Contrary+to+what+the+title+may+suggest%2C+it%26%238217%3Bs+not+a+%26%238220%3Bvegetarian+book%26%238221%3B+defending+some+variant+of+the...&amp;tags=books%2Cenvironment%2Csustainability%2Cvegetarian%2Cvegetarianism%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary: Living with Complexity</title>
		<link>http://hcoder.org/2012/03/07/book-summary-living-with-complexity/</link>
		<comments>http://hcoder.org/2012/03/07/book-summary-living-with-complexity/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 23:56:10 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[uxbookclub]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1331</guid>
		<description><![CDATA[This is my summary of the book &#8220;Living with Complexity&#8221;, by Donald A. Norman (of &#8220;The Design of Everyday Things&#8221; fame, among others). It&#8217;s a book about how it&#8217;s wrong to consider complexity (in design) a bad thing. I have skipped a fair deal of the text in the summary, mostly because it wasn&#8217;t applicable [...]]]></description>
			<content:encoded><![CDATA[<p>This is my summary of the book &#8220;Living with Complexity&#8221;, by Donald A. Norman (of &#8220;<a href="http://en.wikipedia.org/wiki/The_Design_of_Everyday_Things">The Design of Everyday Things</a>&#8221; fame, among others). It&#8217;s a book about how it&#8217;s wrong to consider complexity (in design) a bad thing. I have skipped a fair deal of the text in the summary, mostly because it wasn&#8217;t applicable to my job. I have also reorganised the content a lot.</p>
<h2>Main message</h2>
<p>Complexity in itself is neither good nor bad, it&#8217;s confusion that is bad. Good design can help taming complexity, not by making things less complex, but by <em>managing</em> the complexity. There are two keys to cope with complexity: design that show its underlying logic to make it understandable, and our own skills and understanding of that logic. People need to take the time to learn, understand, and practice, because systems that deal with complex activities will not be immediately understandable, no matter how well they&#8217;re designed.</p>
<h2>The misguided cry for simplicity</h2>
<p>The argument between simplicity and features is misguided: people want more capabilities and more ease of use, but not necessarily more features or more simplicity. What people want is understandable devices. It&#8217;s not even a trade-off between simplicity and complexity because (a) simplicity is not the goal, and (b) you don&#8217;t have to give up something in order to have more simplicity.</p>
<p>We seek rich and satisfying lives, which goes along with complexity. Too simple and it&#8217;s dull; too complex and it&#8217;s confusing. This happens in every subject (also music, movies, etc). The problem is when complexity is arbitrary and unnecessary.</p>
<p>What makes something simple or complex is the conceptual model of the person using it: many activities we think of &#8220;intuitive&#8221; now, like swim or ride a bike, have taken us years to learn and master. We can often use something by following instructions, without having a good conceptual model. But then we run into problems, and we complain that it&#8217;s too complicated. Comparisons with tools like hammers are wrong, because (1) even if the tool is simple, mastering its usage actually takes a long time; and (2) users of those tools typically need many of them, and each one has to be mastered separately.</p>
<h2>On anti-social machines</h2>
<p>Machines are often anti-social when things go wrong: they become unresponsive and unhelpful, like bureaucracies. The problem is that the designer typically focuses on correct behaviour (ie. not a lot of work on error conditions). This is worse when systems are designed by engineers who view things from their logical point of view, feel people &#8220;get in the way&#8221; (the &#8220;foolproof&#8221; systems syndrome).</p>
<p>We try to add intelligence to machines, but what they need (and this is seldom considered) is communication skills, etiquette and communication. We often need to change our goals in the middle of an operation, or want to substitute or skip some steps, or do them in a different order, or are interrupted and have to finish a task at a later point. Most systems don&#8217;t allow this. Isolated, context-free intelligent tools can&#8217;t be sociable.</p>
<h2>System thinking</h2>
<p>System thinking (considering the entire process as a human-centred design) is the secret to success in services. This is part of what has made Apple so successful: (1) design cohesive systems, not isolated products; (2) recognising that a system is only as good as the weakest link, and (3) design for the total experience.</p>
<p>Desire lines (like messy trails besides the designed paths in the real world) can often teach us something about what people want and how the design might have gone wrong. Neglect of usage patterns can turn simple, attractive items into complicated, ugly ones, and also turn simple components into a complicated combination when they are put together. Everyday life is often complex not because of a single complex activity, but because of many simple activities with different requirements or idiosyncrasies.</p>
<h2>Waiting lines</h2>
<p>Waiting lines have been studied from the efficiency point of view. But what about the experience? Principles to improve the latter:</p>
<ol>
<li>Provide a conceptual model (perhaps the most important principle): uncertainty is an important cause of emotional irritation; people need assurance when they have problems.</li>
<li>Make the wait seem appropriate: people should know why they wait, and agree that it&#8217;s reasonable.</li>
<li>Meet of exceed expectations: always overestimate waiting time.</li>
<li>Keep people occupied: it&#8217;s psychological time, not physical, that is important. Give people things to do, keep lines moving and make them appear short.</li>
<li>Be fair: emotion is heavily influenced by perceived causal agents.</li>
<li>End strong, start strong: in order of importance, the end, start, and middle are the most important to take care of.</li>
</ol>
<p>The memory of the whole event is more important than the details of what happened. When there are positive and negative components, it&#8217;s best to: finish strong, segment the pleasure but combine the pain, and getting bad experiences out of the way early.</p>
<h2>Principles to manage complexity</h2>
<p>Note that this list is heavily edited compared to the book.</p>
<ol>
<li>Make things understandable. Good conceptual models have to be communicated effectively. Jurg Nievergelt and J. Weydert argued for the importance of three knowledge states: sites, modes and trails, which can be translated into three needs, namely knowledge of the past (knowing how we got into the present state; many systems erase the past so we may not know how we got there), present (knowing the current state, how are we regarding starting point and goals, and what actions are possible now) and future (knowing what to expect).</li>
<li>Avoid error messages. They indicate the system is confused, not the user. Don&#8217;t scold her. Good design means never have to tell the user &#8220;that was wrong&#8221;.</li>
<li>Structure. Divide the task into manageable modules that are easy to learn, or find a different way to frame the problem so it&#8217;s less complicated.</li>
<li>Automation. Many tasks can be simplified by automating them, but this only helps if it&#8217;s reliable: when there are errors, it can be more complex to switch back and forth between automated and manual than to not have any automation at all.</li>
<li>Nudges and defaults. Sometimes forcing functions (constraints that prevent unwanted behaviour) are too strong, all is needed is a gentle nudge. Defaults are an effective way to simplify the interaction with the world, and a strong tool to drive people&#8217;s behaviour.</li>
<li>Learning aids. Instruction manuals are rarely read. When people use a new service or system, they have a goal, they&#8217;re not going to read the instructions first. Most people want &#8220;just in time&#8221; learning and learn better when they need to. The best explanations are in context and show how the task is done (short video demonstrations work well).</li>
</ol>
<p>And that&#8217;s it. Hope you enjoyed  it.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1331&amp;md5=550c1581a597a1691c9cf1babc02a5b5" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2012/03/07/book-summary-living-with-complexity/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2012%2F03%2F07%2Fbook-summary-living-with-complexity%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Living+with+Complexity&amp;description=This+is+my+summary+of+the+book+%26%238220%3BLiving+with+Complexity%26%238221%3B%2C+by+Donald+A.+Norman+%28of+%26%238220%3BThe+Design+of+Everyday+Things%26%238221%3B+fame%2C+among+others%29.+It%26%238217%3Bs+a+book+about+how+it%26%238217%3Bs+wrong...&amp;tags=books%2Cdesign%2Cux%2Cuxbookclub%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary: Designing with the Mind in Mind</title>
		<link>http://hcoder.org/2012/01/10/book-summary-designing-with-the-mind-in-mind/</link>
		<comments>http://hcoder.org/2012/01/10/book-summary-designing-with-the-mind-in-mind/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 23:10:26 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[uxbookclub]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1259</guid>
		<description><![CDATA[This is my summary of &#8220;Designing with the Mind in Mind&#8221; by Jeff Johnson, a book about user interface design that explores the reasons why those principles work. Introduction How valuable are UI design guidelines depends on who applies them. They often describe goals, not actions, so they can&#8217;t be followed like a recipe. They [...]]]></description>
			<content:encoded><![CDATA[<p>This is my summary of &#8220;Designing with the Mind in Mind&#8221; by Jeff Johnson, a book about user interface design that explores the reasons why those principles work.</p>
<h2>Introduction</h2>
<p>How valuable are UI design guidelines depends on who applies them. They often describe goals, not actions, so they can&#8217;t be followed like a recipe. They also often conflict with each other. This book tries to give rationale to make them easier to apply.</p>
<h2>Visual content</h2>
<ul>
<li><em>Structure</em>: Gestalt principles (proximity, similarity, continuity, closure, symmetry, figure/ground, common fate), see on p. 11-22. They act together, and sometimes they produce effects we <em>don&#8217;t</em> want: review designs with each of these principles in mind to see if they suggest a relationship that shouldn&#8217;t be there.</li>
<li><em>Text</em>: we&#8217;re wired for language, but not for reading. Typical text-related mistakes: geek-speak, tiny fonts (if the text is hard to read, it probably won&#8217;t be read, so you might as well remove it), burying important information in repetition, and using just too much text (use just enough to help most users get to their intended goals).</li>
<li><em>Colour</em>: our vision is optimised to detect contrasts (edges), and our ability to distinguish colours depends on how they are presented (colours are harder to distinguish if they&#8217;re pale, in small/thin patches or separated from each other). Guidelines for colour: (1) distinguish by saturation/brightness, not only hue, (2) use distinctive colours (red, green, yellow, blue, black and white), (3) avoid colour pairs that colour-blinds can&#8217;t distinguish (tips on p.59-60, including <a href="http://www.vischeck.com/">http://www.vischeck.com/</a>), (4) don&#8217;t rely on colour alone, and (5) don&#8217;t place strong opponent colours next to each other (see p. 62).</li>
<li><em>Peripheral vision</em>: we only have good resolution in the centre of wherever we&#8217;re looking. Peripheral vision (1-2 centimetres from peripheral vision) mostly only provides cues for our eye movement (good example of bad error message, based on this, on p. 71). To make an error message visible: (1) put it where users are looking, (2) mark it (often it&#8217;s enough placing it next to what it refers to), (3) use an error symbol/icon, and (4) reserve red for errors. Heavy artillery (use with care!): (1) pop-ups, (2) sound (makes users scan the screen for errors; make sure they can hear it!), (3) motion or blinking (but not for more than a quarter- or half-second).</li>
<li><em>Visual hints</em>: use pictures where possible to convey function (quicker to recognise; memorable icons hint at their meaning, are distinguishable from others and consistently mean the same even across applications); thumbnails depict full-sized images effectively if they keep features; use visual cues to let users recognise where they are (distinctive visual style, colours, etc).</li>
</ul>
<h2>Expectations</h2>
<p>Our perception is biased by our experience, current context and goals. Implications: (1) test your design to make sure different users interpret it in the same way; (2) be consistent with position, colours and font for elements that serve the same function; and (3) understand your users&#8217; goals (they can be different, too!) and make sure you support them by making relevant information clearly visible at every stage.</p>
<h2>Memory</h2>
<p>We&#8217;re much better at recognising than at remembering (&#8220;see and choose&#8221; is easier than &#8220;recall and type&#8221;). Tips: (1) avoid modes, or if you can&#8217;t, show the current mode clearly; (2) show search terms when showing search results (they&#8217;re easy to forget if we get interrupted for whatever reason); (3) when showing instructions for a multi-step process, make sure the instructions are there while following the steps.</p>
<h2>Attention and goals</h2>
<p>When people focus their attention on their tools, it is pulled away from the details of the task. Software applications should not call attention to themselves. Short-term memory and attention are very limited, so don&#8217;t rely on them. Instead indicate what users have done versus what they have not yet done, and/or allow users to mark or move objects to indicate which ones they have worked on versus the rest.</p>
<p>Support people&#8217;s goal-execute-evaluate cycle: provide clear paths, including initial steps, for the <em>goal</em>; software concepts should be focused on the task rather than implementation, for the <em>execution</em>; provide feedback and status information to show users their progress towards their goal, and allow users to back out of tasks that didn&#8217;t take them toward their goal, for <em>evaluation</em>.</p>
<p>While pursuing a goal, people only notice things that seem related to it, and take familiar paths whenever possible rather than exploring new ones, esp. when working under deadlines. After they&#8217;re done, they often forget cleanup steps: design software so that users don&#8217;t need to remember, or at least to remind them.</p>
<p>Misc. tips:</p>
<ul>
<li>Don&#8217;t expect users to deduce information, tell them explicitly what they need to know.</li>
<li>Don&#8217;t make users diagnose system problems. They don&#8217;t have the skills.</li>
<li>Minimise the number and complexity of settings. People are really bad at optimising combinations of settings.</li>
<li>Let people use perception rather than calculation, when possible (some problems, when presented graphically, allow people to achieve their goals with quick perceptual estimates instead of calculations).</li>
<li>Make the system familiar (concepts, terminology, graphics), by following industry standards, by making the software work like an older application the user know, or by basing the design on metaphors.</li>
<li>Let the computer do the math, don&#8217;t make people calculate things the computer can calculate for them.</li>
</ul>
<h2>Learning</h2>
<p>We learn faster when operation and vocabulary is task-focused, and when risk is low:</p>
<ul>
<li>Task-focused operation: you have to understand the users&#8217; goals in order to reduce the gap between what the user wants and the operations supported by the tool is called &#8220;the gulf of execution&#8221;. To understand goals: perform a task analysis (checklist on p. 135) and design a task-focused conceptual model (the list of objects/actions analysis the user should know about).  The second should be as simple as possible (ie. less concepts), avoid overlapping concepts, and not have things &#8220;just in case&#8221;. Only then sketch and design a user interface, based strictly on the task analysis.</li>
<li>Task-focused vocabulary: it should be familiar and consistent (&#8220;same name, same thing; different name, different thing&#8221;), mapped 1:1 to the concepts.</li>
<li>Low risk: often people are afraid of being &#8220;burned&#8221; and don&#8217;t learn or explore. People make mistakes, so systems should try to prevent errors where possible, make errors easy to detect by showing users what they have done, and allow users to undo/reverse easily.</li>
</ul>
<h2>Responsive systems</h2>
<p>Responsiveness is not the same as performance, it can&#8217;t be fixed by having faster machines/software. Principles:</p>
<ul>
<li>Let you know immediately your input was received</li>
<li>Provide some indication of how long operations will take</li>
<li>Free you to do other things while waiting</li>
<li>Manage queued events intelligently</li>
<li>Perform housekeeping and low-priority tasks in the background</li>
<li>Anticipate your most common requests</li>
</ul>
<p>When showing progress indicators (always an operation takes longer than a few seconds): show work <em>remaining</em>; total progress, not progress on the current step; start percentages at 1%, not 0% (and display 100% only briefly at the end); show smooth, linear progress, not erratic bursts; use human-scale precision, not computer precision (&#8220;about 4 minutes&#8221; better than &#8220;240 seconds&#8221;).</p>
<p>Display important information first. Don&#8217;t wait to have all the information to show everything at once.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1259&amp;md5=0525456523d019080ee5bc3839bedfaf" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2012/01/10/book-summary-designing-with-the-mind-in-mind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2012%2F01%2F10%2Fbook-summary-designing-with-the-mind-in-mind%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Designing+with+the+Mind+in+Mind&amp;description=This+is+my+summary+of+%26%238220%3BDesigning+with+the+Mind+in+Mind%26%238221%3B+by+Jeff+Johnson%2C+a+book+about+user+interface+design+that+explores+the+reasons+why+those+principles+work.+Introduction+How...&amp;tags=books%2Cux%2Cuxbookclub%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary and review: Bodies</title>
		<link>http://hcoder.org/2011/12/07/book-summary-and-review-bodies/</link>
		<comments>http://hcoder.org/2011/12/07/book-summary-and-review-bodies/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 20:11:39 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[psychology]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1241</guid>
		<description><![CDATA[This is my summary of &#8220;Bodies&#8221;, by Susie Orbach. It&#8217;s a book about the relationship to our body and how it affects us and our life. As this book is sort of similar to &#8220;Who are we&#8221; in the sense that there are several general points being made and most of the book are stories [...]]]></description>
			<content:encoded><![CDATA[<p>This is my summary of &#8220;Bodies&#8221;, by <a href="http://en.wikipedia.org/wiki/Susie_Orbach">Susie Orbach</a>. It&#8217;s a book about the relationship to our body and how it affects us and our life. As this book is sort of similar to &#8220;<a href="http://hcoder.org/2011/08/25/book-summary-who-are-we-—-and-should-it-matter-in-the-21st-century/">Who are we</a>&#8221; in the sense that there are several general points being made and most of the book are stories supporting or explaining those points, I&#8217;m not writing my notes about each chapter separately but doing a more &#8220;proper&#8221; summary. I&#8217;ve also written a mini-review below.</p>
<h2>Summary</h2>
<p>There has never been a &#8220;natural&#8221; body: bodies have always been the expression of a specific period, geography, sexual, religious and cultural place. However, today only a few aspirational and idealised body types are taking the place of all possible bodies. We&#8217;re losing body variety as fast as we&#8217;re losing languages. Again like with languages, there&#8217;s a critical period for &#8220;body acquisition&#8221;. We can feel alienated of our own body (for the rest of our lives) if we don&#8217;t learn to feel comfortable with it in that critical period.</p>
<p>The individual is now deemed accountable for his/her body and judged by it, turning &#8220;looking after oneself&#8221; into a moral value. A search for contentment around the body is a hallmark of our times, and a belief in both the perfectible body and the notion that we should accede to improve it has contributed to a progressively unstable body.</p>
<p>The body is becoming akin to a worthy personal object. Body transformation is today less of a social ritual, and more wanting to produce an acceptable body (wounded soldiers vs. TV contestants on p. 84-85). We seem to believe that almost anything about the body can be changed by the individual, turning plastic surgery into a consumer item: a treat, like a holiday. Sexuality has to be conjured and performed, it doesn&#8217;t exist or flow naturally.</p>
<p>The new grammar of visual culture, which is not even real (Photoshop), produces that even children photos are &#8220;enhanced&#8221;, generating frustration and even making people lose accurate records of their visual history (very interesting notes on p. 87-90). We fall into the trap of us &#8220;enjoying fashion and beauty&#8221;, believing we&#8217;re agents instead of victims, but we aren&#8217;t being creative with our bodies or having fun with them: we feel at fault for not matching up to the current, impossible to reach imagery. We take for granted that looking good for ourselves is going to make us feel good, find faults in our bodies and say that it makes us feel better, more in control, to improve them.</p>
<h2>Review</h2>
<p>I generally liked the book, but sometimes I thought it was a bit too long. Many of the important points are already made in the introduction, and the rest of the chapters are more stories and references supporting the initial points. Worse yet, I sometimes found those arguments or stories not completely believable or convincing (eg. using controversial material like some <a href="http://en.wikipedia.org/wiki/Harry_Harlow">Harry Harlow</a> experiments or <a href="http://en.wikipedia.org/wiki/Victor_of_Aveyron">Victor of Aveyron</a>&#8216;s story to support her points). In other cases, some relatively bold claims were not backed up by references, which made me feel could be not representative or poorly-researched or, at least, made them weaker because of a lack of context.</p>
<p>However, the book <em>is</em> well written and made me reconsider several things, which is what books like this should do. Recommended if you&#8217;re interested in psychology or if you find it intriguing to learn about our relationship to our physical bodies. Although I skipped them in the summary, some of the stories (like the man who didn&#8217;t want to have legs) are pretty mind-blowing and interesting in themselves.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1241&amp;md5=d6eff067190f8426020a596d514d7aa1" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/12/07/book-summary-and-review-bodies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F12%2F07%2Fbook-summary-and-review-bodies%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary+and+review%3A+Bodies&amp;description=This+is+my+summary+of+%26%238220%3BBodies%26%238221%3B%2C+by+Susie+Orbach.+It%26%238217%3Bs+a+book+about+the+relationship+to+our+body+and+how+it+affects+us+and+our+life.+As+this+book+is...&amp;tags=books%2Cculture%2Cpsychology%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary: Envisioning information</title>
		<link>http://hcoder.org/2011/11/10/book-summary-envisioning-information/</link>
		<comments>http://hcoder.org/2011/11/10/book-summary-envisioning-information/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 00:43:01 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[tufte]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1216</guid>
		<description><![CDATA[These are my notes about &#8220;Envisioning information&#8221; by Edward R. Tufte. It&#8217;s not a normal summary because most of the content needs the graphics, plots and figures being discussed. The following notes cover the whole book (six chapters). EDIT: Manuela wrote another, easier to read summary. Escaping flatland The methods in this book work to [...]]]></description>
			<content:encoded><![CDATA[<p>These are my notes about &#8220;Envisioning information&#8221; by <a href="http://en.wikipedia.org/wiki/Edward_Tufte">Edward R. Tufte</a>. It&#8217;s not a normal summary because most of the content needs the graphics, plots and figures being discussed. The following notes cover the whole book (six chapters).</p>
<p><strong>EDIT:</strong> Manuela wrote <a href="http://manooh.com/blog/2011/11/dilated-dimensionality/">another, easier to read summary</a>.</p>
<h2>Escaping flatland</h2>
<p>The methods in this book work to increase the number of dimensions that can be represented on plane surfaces and the data density. Nearly every escape from flatland demands an extensive compromise, trading off one virtue against another. Even our language often lacks capacity to communicate a sense of dimensional complexity. Some design strategies are found again and again (examples of over 380 years of sunspot data analysis). These design strategies are surprisingly widespread, albeit little appreciated, and occur independently of the content of the data.</p>
<p>Massive Java railroad line example on p. 24-25. The train diagonals cleverly multiple-function, recording six variables at once (p. 26). Example of criminal activity for a trial on p. 30-31. The chart invites reading both horizontally and vertically. The eyes detect curious patterns, which make these displays persuasive and memorable. Visual displays of information encourage a diversity of individual viewer styles and rates of editing, personalising, reasoning and understanding. Unlike speech, visual displays are simultaneously a wideband and a perceiver-controllable channel.</p>
<p>We envision information to reason about, communicate, document and preserve that knowledge. Chartjunk on p.34: data-thin, uncontextual graphs. Its promoters imagine numbers to be dull and tedious, requiring ornament. If numbers are boring, you got the wrong numbers. The audience might be busy or eager to get on with it, but not stupid. Chartjunk looks more like a poster, meant to be looked at from a distance (thin data density).</p>
<h2>Micro/macro readings</h2>
<p>Detail cumulates in coherent structures. Simplicity of reading derives from the context of detailed and complex information, properly arranged. <em>To clarify, add detail</em>. Stem-and-leaf plots of statistical analysis also rely on micro/macro design (examples on p. 46-47).</p>
<p>We thrive in information-thick worlds because of our marvellous and everyday capacities to select, edit, single out, structure, highlight, group, &#8230; Visual displays rich with data are not only an appropriate and proper complement to human capabilities, but also such designs are frequently optimal. If the visual task is contrast, comparison and choice, then the more relevant information within eyespan, the better. Low-density requires visual memory, a weak skill. High density also allows viewers to select, narrate, recast and personalise data for their own uses.</p>
<p>What about information overload? The question misses the point. Clutter and confusion are failures of design, not attributes of information. Interesting quote on typography on p. 51. The deepest reason for displays that portray complexity and intricacy is that the worlds we seek to understand are complex and intricate.</p>
<h2>Layering and separation</h2>
<p>This technique is one the most powerful devices for reducing noise and enriching the content of displays. The various elements interact, creating non-information patterns and texture simply through their combined presence (<em>1 + 1 = 3 or more</em>). Colour effortlessly differentiates between annotation and annotated (example on p. 54). What matters is the proper relationship among information layers (example of old + improved design on p. 54-55). For tables, try to do without rules altogether, only use when absolutely necessary. Example of map (good and bad) on p. 58. Example of (non-)dull background on p. 59. Notes on how 1 + 1 = 3 can also be applied to noise on p. 61-62. Example of use of colours (another bad + good design) on p. 63.</p>
<p>Information consists of differences that make a difference. A fruitful method for the enforcement of such differences is using layering and separation.</p>
<h2>Small multiples</h2>
<p>Quantitative reasoning is based on &#8220;compared to what?&#8221;. Small multiples answer by visually enforcing comparisons of changes, of the differences among objects, and the scope of alternatives. Information slices are positioned <em>within the eyespan</em>, so that viewers make comparisons at a glance. Example of drawing a Kana character on p. 69. Simultaneous two-dimensional indexing of the multiplied image, flatland within flatland, significantly deepens displays with little added complication in reading.</p>
<h2>Colour and information</h2>
<p>Example of Swiss mountain map on p. 80. Fundamental uses of colour in information design: label (colour as noun), measure (as quantity), represent or imitate reality (representation), enliven or decorate (beauty). Principles to minimise colour damage: (1) pure, bright colours have loud, unbearable effects when they stand unrelieved over large areas adjacent to each other, but can work very well when used sparingly on or between dull background tones; (2) placing of light, bright colours mixed with white next to each other usually produces unpleasant results, esp. if the colours are used for large areas; (3) large area background or base-colours should do their work most quietly, allowing the smaller, bright areas to stand out most vividly (strongly muted colours, mixed with grey, provide the best background for the coloured theme).</p>
<p>What palette of colours should we choose to represent and illuminate information? Use colours in nature (familiar and coherent, possessing a widely accepted harmony to the human eye), esp. those on the lighter side such as blues, yellows, and greys of sky and shadow. Great examples on p. 90.</p>
<p>In the ocean map, quantities are shown by a value scale, progressing from light to dark blue. Colour rainbows confuse viewers to mumbling colour names and the numbers they represent (&#8220;To see is to forget the name of the thing one sees&#8221;). Colours are sensitive to context. In the ocean map, contours (which are very helpful) are labelled with depth measurements. Edge lines allow very fine value distinctions, increasing scale precision. Example of bad map/good colour on maps on p. 94-95.</p>
<h2>Narratives of space and time</h2>
<p>Example of bad/good train schedule on p. 104-105. Space-time grids have a natural universality, with nearly boundless subtleties and extensions. Great, assorted examples on p. 110-111. Example of &#8220;tale of two cities&#8221; on p. 112-113.</p>
<h2>Final notes</h2>
<p>I&#8217;m aware that this summary is not very useful if you can&#8217;t see the different diagrams being examined, but it&#8217;s partly for myself :-) Anyway, if you like the ideas in the book, go buy it, it&#8217;s a great book in a big format, with really nice paper and full of very interesting examples of both good and bad information design.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1216&amp;md5=e244f8d171405b58ce5189552027f3c9" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/11/10/book-summary-envisioning-information/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F11%2F10%2Fbook-summary-envisioning-information%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Envisioning+information&amp;description=These+are+my+notes+about+%26%238220%3BEnvisioning+information%26%238221%3B+by+Edward+R.+Tufte.+It%26%238217%3Bs+not+a+normal+summary+because+most+of+the+content+needs+the+graphics%2C+plots+and+figures+being+discussed.+The...&amp;tags=books%2Cdesign%2Cinformation%2Ctufte%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Pragmatic Thinking &amp; Learning, Wikis and Javascript</title>
		<link>http://hcoder.org/2011/10/24/pragmatic-thinking-learning-wikis-and-javascript/</link>
		<comments>http://hcoder.org/2011/10/24/pragmatic-thinking-learning-wikis-and-javascript/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 21:36:25 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[pet]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[wikis]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1207</guid>
		<description><![CDATA[After so much &#8220;slacking&#8221; (just posting book summaries) I&#8217;m trying to go back to regular blogging. Remember my summary of Pragmatic Thinking &#38; Learning? There are many exercises and pieces of advice in that book that I have been trying to practice. One of the things I decided to go for was having a personal [...]]]></description>
			<content:encoded><![CDATA[<p>After so much &#8220;slacking&#8221; (just posting book summaries) I&#8217;m trying to go back to regular blogging. Remember <a href="http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/">my summary of Pragmatic Thinking &amp; Learning</a>? There are many exercises and pieces of advice in that book that I have been trying to practice. One of the things I decided to go for was having a <a href="http://en.wikipedia.org/wiki/Personal_wiki">personal wiki</a>. One of the reasons being, in all honesty, that I had always wanted to have one. Another reason being that my pet TODO application, <a href="https://bitbucket.org/emanchado/bubug/wiki/Home">Bubug</a>, had finally died after some Debian update (some retarded Ruby module broke compatibility with the version I was using, or something; couldn&#8217;t care to investigate). And yet another reason, well, to have a new small pet project and follow my obsession with learning Javascript, and especially <a href="http://nodejs.org/">Node</a>. And that I wanted to give <a href="https://no.de/">Joyent&#8217;s free Node service</a> a try!</p>
<p>But enough with the reasons. It&#8217;s starting to look like it was a pretty useful mini-project. Not just because I learned a bit more Javascript, the excellent <a href="http://expressjs.com/">express</a> web development framework and other things, but also because the result itself, even though it didn&#8217;t take long to develop (and it was pretty fun, even!), feels useful. It feels like a nice place to put all my notes, TODOs, random ideas for projects, etc. A similar feeling of freedom as when I started using my first <a href="http://en.wikipedia.org/wiki/Moleskine">Moleskine</a>. Not that I would ditch paper for computer-<em>anything</em>, but it&#8217;s useful and freeing in its own way, for specific purposes.</p>
<p>About the technology, I used the <a href="http://en.wikipedia.org/wiki/Markdown">Markdown</a> format for the pages thanks to the <a href="https://github.com/evilstreak/markdown-js">markdown-js library</a> (it&#8217;s really nice that the module has an intermediate tree format that you can parse to add your own stuff before converting to HTML, like e.g. wikipage links!), <a href="http://expressjs.com/">express</a> for the whole application structure and <a href="http://code.google.com/p/js-test-driver/">js-test-driver</a> + <a href="http://cjohansen.no/en/javascript/jstdutil_a_ruby_wrapper_over_jstestdriver">jsautotest</a> + a bit of syntax sugar from <a href="http://sinonjs.org/">Sinon.js</a> for the tests (but looking forward to trying out <a href="http://busterjs.org/">Buster.js</a> when it&#8217;s released!). The deployment to Joyent&#8217;s Node.js SmartMachine was reasonably easy. Actually, it was pretty easy once I figured the following:</p>
<ul>
<li>You must not forget to listen in the correct port, with <code class="syntax javascript">server.listen(process.env.PORT || 8001)</code></li>
<li>There are a couple of pretty useful <a href="http://wiki.joyent.com/display/node/Getting+Started+with+a+Node.js+SmartMachine#GettingStartedwithaNode.jsSmartMachine-SSHaccess">Node.js-related command-line utilities</a> to check logs, restart applications and so on</li>
<li>The configuration of the application can be done via <code class="syntax">npm config</code>, see <a href="http://wiki.joyent.com/display/node/npm+Integration">npm integration on Joyent&#8217;s Wiki</a></li>
</ul>
<p>If you&#8217;re curious to see the code, play with it or use it yourself, take a peek to the <a href="https://github.com/emanchado/Wiki-toki">Wiki-Toki repository</a> on GitHub. Happy hacking!</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1207&amp;md5=666f11f6b9488a0fae815494decab83b" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/10/24/pragmatic-thinking-learning-wikis-and-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F10%2F24%2Fpragmatic-thinking-learning-wikis-and-javascript%2F&amp;language=en_GB&amp;category=text&amp;title=Pragmatic+Thinking+%26%23038%3B+Learning%2C+Wikis+and+Javascript&amp;description=After+so+much+%26%238220%3Bslacking%26%238221%3B+%28just+posting+book+summaries%29+I%26%238217%3Bm+trying+to+go+back+to+regular+blogging.+Remember+my+summary+of+Pragmatic+Thinking+%26amp%3B+Learning%3F+There+are+many+exercises+and+pieces...&amp;tags=books%2Cdevelopment%2Cgithub%2Cjavascript%2Cmarkdown%2Cpet%2Cprogramming%2Cprojects%2Cwikis%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary: Pragmatic Thinking &amp; Learning (III)</title>
		<link>http://hcoder.org/2011/10/12/book-summary-pragmatic-thinking-learning-iii/</link>
		<comments>http://hcoder.org/2011/10/12/book-summary-pragmatic-thinking-learning-iii/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 23:38:09 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[brain]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1192</guid>
		<description><![CDATA[This is the third and last part of my summary of Pragmatic Thinking &#38; Learning, by Andy Hunt. See parts one and two on this same blog. This part will cover chapters &#8220;Gain experience&#8221;, &#8220;Manage Focus&#8221; and &#8220;Beyond Expertise&#8221;. Gain experience Your brain is made to learn by exploring and building mental models on your [...]]]></description>
			<content:encoded><![CDATA[<p>This is the third and last part of my summary of Pragmatic Thinking &amp; Learning, by Andy Hunt. See parts <a href="http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/">one </a>and <a href="http://hcoder.org/2011/10/11/book-summary-pragmatic-thinking-learning-ii/">two</a> on this same blog. This part will cover chapters &#8220;Gain experience&#8221;, &#8220;Manage Focus&#8221; and &#8220;Beyond Expertise&#8221;.</p>
<h2>Gain experience</h2>
<p>Your brain is made to learn by exploring and building mental models on your own, not by receiving information passively (see amazing footage of tennis teacher in Alan Kay&#8217;s <a href="http://video.google.com/videoplay?docid=-533537336174204822">Doing with Images Makes Symbols</a>, starting on 55:30). In real life there&#8217;s no curriculum, you&#8217;ll make mistakes and it will get messy: the kind of feedback you need. We learn by &#8220;playing&#8221;, but that doesn&#8217;t mean easy or non-business-like. <a href="http://en.wikipedia.org/wiki/Seymour_Papert">Papert</a> students called it &#8220;fun&#8221; <em>because</em> it was hard, not <em>in spite of</em>.</p>
<p>Leveraging existing knowledge helps learning new skills: we can often find similarities, literal or metaphorical, with existing skills. However, careful not to <em>stick</em> with the similarity. Fully embrace the new skill&#8217;s unique characteristics.</p>
<p>Failures are valuable because they can lead to study and understand what went wrong and how to fix it. They are critical to success, but only when well-managed. A good environment for good failures needs freedom to experiment (few problems have a single solution; prototype more than one solution to a problem), ability to backtrack to a stable state, reproduce any work product as of any time (source control, and the ability to run those versions of the program), ability to demonstrate progress (get comparable feedback between versions). Version control, unit testing and automation give this environment. A supporting environment can make or break learning for anyone.</p>
<p>Tip: to raise awareness when some code fails without apparent reason, try to imagine what the code should look like, then compare it to the real thing.</p>
<p>Time pressure actively shuts things down. Your vision narrows, and R-mode doesn&#8217;t get the chance to work at all.</p>
<h2>Manage Focus</h2>
<p>When not doing anything, the L-mode will produce incessant mental chatter, which interferes with R-mode processing. Meditation helps controlling the L-mode &#8220;monkey voice&#8221;.</p>
<p>When meditating you don&#8217;t want trance, falling asleep, or &#8220;contemplate the big mystery&#8221;, but to sink into a relaxed awareness of yourself and your environment without judgement or making responses. Meditation exercise suggestion: find a quiet spot; sit in a comfortable, alert position with a straight back (become aware of any tension and fix it); close you eyes and focus your awareness on your breath; be aware of the rhythm (don&#8217;t try to change it, just be aware); keep your mind focused on your breath (do not use words or start a conversation with yourself); when you start thinking about some topic or having a conversation with yourself, let the thoughts go and get the focus back on the breath. Even if you mind is wandering often, the exercise of bringing yourself back is useful.</p>
<p>You have to let your thoughts &#8220;marinate&#8221; to get the best results. Different people have different methods to marinate (sitting around doing nothing, humming, eating a crunchy snack, making paper dolls&#8230;). Thinking about at least three solutions to a problem gives you the confidence that you have thought &#8220;enough&#8221; about it. Then, you can let those ideas marinate and come up with the best solution.</p>
<p>Assorted tips:</p>
<ul>
<li>Develop your exocortex (mental memory or processing outside your physical brain: book collection, notes, favourite IDE, etc).</li>
<li>Deliberate switching to e-mail/IM. Close what you&#8217;re working on, take a deep breath, then switch.</li>
<li>Have a way to note things quickly when they come up, without losing the flow or what you were doing (wiki/scratchpad inside you IDE or whatever).</li>
<li>When stuck or bored, doodle on a piece of paper, or go for a walk (without talking to anyone). That helps against checking the internet or e-mail.</li>
<li>Don&#8217;t answer IM right away, put up a sign (&#8220;don&#8217;t disturb&#8221;) during a debugging session or similar, or close the door if you have one. When you do get interrupted, try to save your mental state before you lose it.</li>
<li>Get two monitors (same size and brand) to keep the whole context at sight. Organise virtual desktops by task (communications/distractions, writing, coding/checking documentation, surfing), not by kind of application (browsers, editors, terminals).</li>
</ul>
<p>In summary: learn to quiet your chattering L-mode, deliberately work with and add to thoughts in progress, and be aware of how expensive context switching can be.</p>
<h2>Beyond Expertise</h2>
<p>Change is harder than it looks, old habits don&#8217;t go away easily. Don&#8217;t be hard on yourself, just correct it and go back to the right path. Suggestions to make effective change:</p>
<ul>
<li><em>Start with a plan</em>. Keep track of what you have accomplished, it&#8217;s probably more than you think.</li>
<li><em>Inaction is the enemy, not error</em>. The danger is not doing things <em>wrong</em>, is not doing anything.</li>
<li><em>New habits take time</em>. Expect at least three weeks, maybe more.</li>
<li><em>Belief is real</em>. If you think you&#8217;ll fail, you will.</li>
<li><em>Take small, next steps</em>. Keep your big goal in mind, but don&#8217;t try to spell out all steps you need to get there.</li>
</ul>
<p>Possible first steps (complete list on p. 247-248, this is just two highlights): (1) pick two things that&#8217;ll help you maintain context and avoid interruption, do them right away; (2) open your mind to aesthetics and additional sensory information (your cubicle, desktop, code: how &#8220;pleasing&#8221; is it?).</p>
<p>You don&#8217;t want to become a &#8220;niche expert&#8221;: approach learning without preconceived notions, prior judgement or a fixed viewpoint; be aware of your own reaction to new technology and ideas; be aware of yourself and the context. The biggest reason any of us fail is the autopilot.</p>
<p>And this is the end. I hope you liked it.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1192&amp;md5=b4e15f8d8f4ecb83aed5a7e1f804de05" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/10/12/book-summary-pragmatic-thinking-learning-iii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F10%2F12%2Fbook-summary-pragmatic-thinking-learning-iii%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Pragmatic+Thinking+%26%23038%3B+Learning+%28III%29&amp;description=This+is+the+third+and+last+part+of+my+summary+of+Pragmatic+Thinking+%26amp%3B+Learning%2C+by+Andy+Hunt.+See+parts+one+and+two+on+this+same+blog.+This+part+will...&amp;tags=books%2Cbrain%2Cdeveloper%2Cdevelopment%2Csoftware%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary: Pragmatic Thinking &amp; Learning (II)</title>
		<link>http://hcoder.org/2011/10/11/book-summary-pragmatic-thinking-learning-ii/</link>
		<comments>http://hcoder.org/2011/10/11/book-summary-pragmatic-thinking-learning-ii/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 22:36:54 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[brain]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1185</guid>
		<description><![CDATA[This is the second part of my summary of Andy Hunt&#8217;s &#8220;Pragmatic Thinking &#38; Learning&#8221;. See the first part on this blog. This part will cover chapters ”Get in Your Right Mind”, “Debug Your Mind” and &#8221;Learn Deliberately&#8221;. Get in Your Right Mind A good way to involve your brain more is to use more [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second part of my summary of Andy Hunt&#8217;s &#8220;Pragmatic Thinking &amp; Learning&#8221;. See the <a href="http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/">first part</a> on this blog. This part will cover chapters ”Get in Your Right Mind”, “Debug Your Mind” and &#8221;Learn Deliberately&#8221;.</p>
<h2>Get in Your Right Mind</h2>
<p>A good way to involve your brain more is to use more senses than usual. For tactile you can use building blocks like Lego, CRC cards, etc. Example of &#8220;role-playing&#8221; a software design on p. 77. The advantage of using the R-mode is not that it&#8217;s a panacea, it&#8217;s simply to use the other half of your brain <em>too</em> (reference to pair programming). Story of the climbing teacher on p. 81: the importance of feeling something first (R-mode) before learning it&#8217;s theory (L-mode), because it gives you the context to understand the theory and explanations better. Learning can be impeded by trying to memorise facts when you don&#8217;t grasp the whole yet. When creating, be comfortable with the absurd and impractical; when learning, get &#8220;used to it&#8221; before learning and memorising. Using metaphors can open up creativity because they communicate the R-mode and the L-mode (<a href="http://wordnet.princeton.edu/">wordnet</a> can help when creating metaphors).</p>
<p>Tip: the &#8220;morning pages&#8221; technique (p. 98). Write them first thing in the morning (before coffee, shower or anything else); write at least three pages by hand, without computer; do not censor what you write; do not skip a day. Blogging is also a good exercise (what you think about a topic, what you can defend publicly).</p>
<p>Tip: learn martial arts or yoga to improve concentration (p. 103). Tip: break small, daily routines (turn off the autopilot).</p>
<p>Forcing the brain to reconcile unlike patterns broadens the scope of material under consideration (see Zen koans and Greek oracles on p. 107). Reference to <a href="http://rtqe.net/ObliqueStrategies/">oblique strategies</a> (has electronic versions, including an <a href="https://market.android.com/details?id=org.multiply.strategies.oblique">Android version</a>!).</p>
<h2>Debug Your Mind</h2>
<p>We make decisions and solve problems based on faulty memory and our emotional state of the time, ignoring crucial facts, etc. <em>Some</em> cognitive biases: anchoring (ref: experiment with numbers and prices in predictably irrational), fundamental attribution error (other people behave based on their personality, we have excuses for our own behaviour; in reality, behaviour is often caused by the context), self-serving bias (&#8220;it&#8217;s my success&#8221;, but &#8220;it&#8217;s not my failure&#8221;; you&#8217;re always part of the system), need for closure (naturally uncomfortable with uncertainty; have to learn to live with it), confirmation bias, exposure effect (prefer familiar things), Hawthorne effect (people change when they&#8217;re being watched, but after a while they go back to how they were behaving), false memory (easy to confuse imagined events with real memories; every memory <em>read</em> is a <em>write</em> in light of the current context), symbolic reduction fallacy (L-mode is anxious to &#8220;symbol-away&#8221; complexity), nominal fallacy (thinking that labelling a thing means you understand it).</p>
<p>How to fight biases: understand that &#8220;rarely&#8221; doesn&#8217;t mean &#8220;never&#8221;, defer closure (you know the most about a project at the <em>end</em> of it, so don&#8217;t take decisions too early, be comfortable with uncertainty), remember that you don&#8217;t remember well. People are mainly a product of their environment and of the times. Explanation of different American generations on p. 125-131. In summary, generational archetypes are prophet (vision, values), nomad (liberty, survival, honor), hero (community, affluence) and artist (pluralism, expertise, due process). Realise where your thinking is coming from, what are your influences, and what kind of arguments you make. Try to have a diverse team so biases can catch/cancel each other. Myers Briggs Type Indicator discussion on p. 133-135. <em>Trust intuition, but verify</em>. If you think you have defined something, try to define the opposite.</p>
<h2>Learn Deliberately</h2>
<p>A single intense, out-of-context classroom event can only get you started in the right direction. You need continued goals, feedback to understand your progress and approach it far more deliberately than a once-a-year course.</p>
<p>For any goal (desired state, usually short-term) you have in mind you need a plan, a series of objectives (steps towards that goal). Objectives should be Specific (&#8220;learn Erlang&#8221; vs. &#8220;be able to write a web server in Erlang that dynamically generates content&#8221;), Measurable (how do you know when you&#8217;re done? related to &#8220;specific&#8221;. You don&#8217;t have to see where you&#8217;re going, just a couple of meters ahead of you), Achievable (from the current state!), Relevant (does it matter to you? is it under your control?) and Time-boxed (perhaps the most important: the deadline).</p>
<p>Create Pragmatic Investment Plans (PIP) to learn whatever you want to learn. Major point involving managing the plan:</p>
<ul>
<li><em>Have a concrete plan</em>: devise different levels of goals (now, next year, next five years).</li>
<li><em>Diversify</em>: make an effort to choose different methodologies, languages, industries, and non-technical stuff.</li>
<li><em>Active investment</em>: need to be able to evaluate your plan and realistically judge how&#8217;s going. Adapt/change the plan based on that.</li>
<li><em>Invest regularly</em>: you need to make a commitment to invest a minimum of time on a regular basis. Create a ritual, if needed.</li>
</ul>
<p>Other techniques, like mind maps, talk to the duck and learning by teaching are mentioned in this chapter, but I&#8217;m skipping them in the summary.</p>
<p>And this is the end of the second part of my summary. The next one will cover the rest of the book, namely chapters &#8220;Gain experience&#8221;, &#8220;Manage Focus&#8221; and &#8220;Beyond Expertise&#8221;.</p>
<p><strong>EDIT:</strong> read the <a href="http://hcoder.org/2011/10/12/book-summary-pragmatic-thinking-learning-iii/">third part</a> of this summary.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1185&amp;md5=9b20e4e00e84d6f8f36b52c24ff94e1e" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/10/11/book-summary-pragmatic-thinking-learning-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F10%2F11%2Fbook-summary-pragmatic-thinking-learning-ii%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Pragmatic+Thinking+%26%23038%3B+Learning+%28II%29&amp;description=This+is+the+second+part+of+my+summary+of+Andy+Hunt%26%238217%3Bs+%26%238220%3BPragmatic+Thinking+%26amp%3B+Learning%26%238221%3B.+See+the+first+part+on+this+blog.+This+part+will+cover+chapters+%E2%80%9DGet+in+Your...&amp;tags=books%2Cbrain%2Cdeveloper%2Cdevelopment%2Csoftware%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book summary: Pragmatic Thinking &amp; Learning</title>
		<link>http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/</link>
		<comments>http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 22:44:48 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Book summaries]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[brain]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1177</guid>
		<description><![CDATA[This is the first part of my summary of &#8220;Pragmatic Thinking &#38; Learning&#8220;, by Andy Hunt. It&#8217;s a book about how the brain works and how to take more advantage of it. It explores many interesting topics, like learning, focusing, the brain modes of operation, etc. Do note that I&#8217;ll skip many techniques/lessons in the [...]]]></description>
			<content:encoded><![CDATA[<p>This is the first part of my summary of &#8220;<a href="http://pragprog.com/book/ahptl/pragmatic-thinking-and-learning">Pragmatic Thinking &amp; Learning</a>&#8220;, by Andy Hunt. It&#8217;s a book about how the brain works and how to take more advantage of it. It explores many interesting topics, like learning, focusing, the brain modes of operation, etc. Do note that I&#8217;ll skip many techniques/lessons in the summary, sometimes because they were less interesting for me (as in, I didn&#8217;t think they would work for me), sometimes because I already practise them. This first part will cover the introduction (<a href="http://media.pragprog.com/titles/ahptl/intro.pdf">in PDF</a>), and chapters &#8221;Journey from Novice to Expert&#8221; (<a href="http://media.pragprog.com/titles/ahptl/chap2.pdf">in PDF</a>) and &#8220;This is Your Brain&#8221;.</p>
<h2>Introduction</h2>
<p>Despite advances in programming languages, techniques, methodologies, &#8230;, the defect density has remained fairly constant. Maybe we&#8217;re focusing on the wrong things: software is created in your head.</p>
<p>You don&#8217;t get <em>taught</em>, you have to <em>learn</em>. Everything is connected, there&#8217;s nothing in isolation, so sometimes small things can have unexpectedly larger effects.</p>
<h2>Journey from Novice to Expert</h2>
<p>The novice needs clear, context-free rules to operate, but an expert is ineffective when constrained by those same rules. Experts don&#8217;t just &#8220;know more&#8221; than novices, they experience fundamental differences in how they perceive the world, approach problem solving, etc. The stages of learning in the Dreyfus model are:</p>
<ul>
<li><em>Novices</em>. Have little or no previous experience in this skill area (&#8220;experience&#8221; results in a change of thinking; doing the same for years doesn&#8217;t count!). They don&#8217;t particularly want to learn, want to accomplish an immediate goal, don&#8217;t know how to respond to mistakes and are fairly vulnerable to confusion when things go awry (example of doing taxes for years on p. 20).</li>
<li><em>Advanced Beginners</em>. Can start to break from the fixed rule set a little bit. Can try tasks on their own but have trouble troubleshooting. They want information fast (eg. API reference) and can start using advice in the correct context, but don&#8217;t have a holistic understanding and really don&#8217;t want it yet.</li>
<li><em>Competent</em>. Can develop mental models and work with them effectively, troubleshoot problems on their own, and begin to figure out how to solve novel problems, as well as seek and take advice from experts. They&#8217;re typically described as &#8220;having initiative&#8221; or &#8220;resourceful&#8221; and tend to be in a leadership role in the team (formal or not). They&#8217;re great to have on your team because they can mentor the novices while not annoying the experts.</li>
<li><em>Proficient</em>. Need the big picture, and thus will seek out and try to understand the larger conceptual framework around the skill. They&#8217;re frustrated by simplified information. This is the first level that can correct previous poor performance and revise their approach. They can also learn from the experience of others, which comes with the ability to understand and apply <em>maxims</em>.</li>
<li><em>Experts</em>. Primary sources of knowledge and information in any field, continually looking for better methods and better ways of doing things. Statistically, there aren&#8217;t many: probably around 1-5%. Experts work on intuition, not reason. They may be completely inarticulate as to how they arrived at a conclusion. They aren&#8217;t perfect though, and have the same cognitive biases as everyone else. They&#8217;re also likely to disagree with one another.</li>
</ul>
<p>Most people, for most skills, never get past the second stage. Plus, practitioners at a lower skill level have a marked tendency to overestimate their own abilities. Note that you want a mix of skills on a team. See &#8220;10 years to expertise&#8221; on p. 32. The dangers of overreliance on formal models (I&#8217;m skipping some in this list!):</p>
<ul>
<li><em>Confusing the model with reality</em>. It&#8217;s easy to confuse the two, but they aren&#8217;t the same.</li>
<li><em>Devaluing traits that cannot be formalised</em>. Good problem-solving skills are critical to our jobs, but problem solving is a very hard thing to formalise.</li>
<li><em>Legislating behaviour that contradicts individual autonomy</em>. You want thinking, responsible developers. Don&#8217;t reward herd behaviour.</li>
<li><em>Alienating experienced practitioners in favour of novices</em>. Targeting your methodology to novices, you create a poor working environment for the more experienced.</li>
<li><em>Oversimplification of complex situations</em>. Every project/situation is more complex than that.</li>
<li><em>Demand for excessive conformity</em>. What worked great in your last project might be a disaster in the next one.</li>
<li><em>Insensitivity to contextual nuances</em>. Formal methods are geared to the typical, not the particular. But when does the &#8220;typical&#8221; ever happen?</li>
<li><em>Mystification</em>. Speech becomes so sloganised that it becomes trivial and loses meaning (eg. &#8220;we&#8217;re a customer-focused organisation&#8221;).</li>
</ul>
<h2>This is your brain</h2>
<p>You have two &#8220;CPUs&#8221;: the linear, logical thought and language processing CPU (&#8220;L-mode&#8221;, for &#8220;linear&#8221;; the &#8220;left part of the brain&#8221;); and the searching and pattern matching CPU (The &#8220;R-mode&#8221;, for &#8220;rich&#8221;; the &#8220;right part of the brain&#8221;). They share the same bus so they can&#8217;t function at the same time.</p>
<p>R-mode can search &#8220;asynchronously&#8221; and come up with the response (possibly days) later. It doesn&#8217;t do any verbal processing, so the results are not verbal either (eg. trying to describe dreams). Also, it&#8217;s not under our direct concious control: as it can give answers anytime, we have to be ready to write down anything that comes up (related: <em>everyone</em> has good ideas, but far fewer <em>track</em> them; of those, even fewer bother to <em>act</em> on those ideas, and even fewer of those have the resources to make a good idea a success). It is very concrete, relating things as they are; it makes analogies and doesn&#8217;t require reason or known facts to process input. It&#8217;s holistic and wants to see the whole thing at once, perceiving overall patterns and structures. It&#8217;s intuitive, making leaps of insight, based on incomplete patterns, hunches, feelings or visual images. It&#8217;s very useful for software design.</p>
<p>Synthesis can be good for learning, see &#8220;<a href="http://web.media.mit.edu/~nicholas/Wired/WIRED2-07.html">Don&#8217;t Dissect the Frog, Build It</a>&#8221; on p. 62. Aesthetics also make a difference, see p. 66-67. The brain is wonderfully plastic. There&#8217;s no limit to the number of skills you can learn, <em>as long as you believe it</em> (ie. what you think about your brain capabilities physically affects the &#8220;wiring&#8221; of the brain itself).</p>
<p>And that&#8217;s all for now. The next part will cover chapters &#8221;Get in Your Right Mind&#8221; and &#8220;Debug Your Mind&#8221;.</p>
<p><strong>EDIT:</strong> read the <a href="http://hcoder.org/2011/10/11/book-summary-pragmatic-thinking-learning-ii/">second part</a> of this summary.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1177&amp;md5=3a009471028332e927f6e8dc7cd09c64" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/10/10/book-summary-pragmatic-thinking-learning/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F10%2F10%2Fbook-summary-pragmatic-thinking-learning%2F&amp;language=en_GB&amp;category=text&amp;title=Book+summary%3A+Pragmatic+Thinking+%26%23038%3B+Learning&amp;description=This+is+the+first+part+of+my+summary+of+%26%238220%3BPragmatic+Thinking+%26amp%3B+Learning%26%238220%3B%2C+by+Andy+Hunt.+It%26%238217%3Bs+a+book+about+how+the+brain+works+and+how+to+take+more+advantage...&amp;tags=books%2Cbrain%2Cdeveloper%2Cdevelopment%2Csoftware%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Book review: Javascript Web Applications</title>
		<link>http://hcoder.org/2011/09/20/book-review-javascript-web-applications/</link>
		<comments>http://hcoder.org/2011/09/20/book-review-javascript-web-applications/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 20:42:17 +0000</pubDate>
		<dc:creator>emanchado</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://hcoder.org/?p=1168</guid>
		<description><![CDATA[This is my review of &#8220;Javascript Web Applications&#8221; by Alex MacCaw, part of the O&#8217;Reilly Blogger Review Program (in a nutshell: you can choose an ebook from a given selection, and you get it for free if you make a review and post it in any consumer site). It&#8217;s a book about using Javascript to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/bloggers/"><img src="http://cdn.oreilly.com/bloggers/blogger-review-badge-200.png" alt="I review for the O'Reilly Blogger Review Program" width="200" height="150" align="right" border="0" /></a> This is my review of &#8220;<a href="http://shop.oreilly.com/product/0636920018421.do">Javascript Web Applications</a>&#8221; by <a href="http://alexmaccaw.co.uk/">Alex MacCaw</a>, part of the O&#8217;Reilly Blogger Review Program (in a nutshell: you can choose an ebook from a given selection, and you get it for free if you make a review and post it in any consumer site). It&#8217;s a book about using Javascript to write (mostly) client-side web applications. The book cover says &#8220;jQuery Developers&#8217; Guide to Moving State to the Client&#8221;, which is somewhat misleading: although most examples that could be written with jQuery <em>are</em> written with jQuery, it&#8217;s a book that anyone interested in Javascript can use, enjoy and learn from, regardless of their library of choice. It doesn&#8217;t even assume you know jQuery, and there&#8217;s a whole appendix dedicated to introducing the reader to the library, should she need it.</p>
<h2>Structure</h2>
<p>The book teaches how to write web applications using Javascript, always following the MVC pattern. It&#8217;s divided in four parts:</p>
<ol>
<li>The first two chapters serve as an introduction to both the MVC pattern and the Javascript language. Although this book is not aimed at total Javascript newbies, you don&#8217;t have to know that much to follow the book. For example, it explains prototypes and constructor functions.</li>
<li>Chapters 3 to 5 cover the implementation details of MVC in Javascript (one chapter for the Model, another for the Controller and the last one about the View).</li>
<li>Chapters 6 to 10 cover many practicalities of client-side web development, like dependency management, unit testing, debugging, interesting browser APIs and deployment tips.</li>
<li>The last three chapters cover Javascript libraries: Spine, Backbone and JavascriptMVC.</li>
</ol>
<p>Additionally, there are three appendices covering <a href="http://jquery.org">jQuery</a>, <a href="http://lesscss.org/">Less</a> and CSS3.</p>
<h2>Highlights and references</h2>
<ul>
<li>Chapter 10 (&#8220;Deploying&#8221;) is full of very good tips and information.</li>
<li>Both the Backbone and the JavascriptMVC chapters were brilliant, looking forward to use any of them soon.</li>
<li>All the <a href="https://github.com/maccman/book-assets">example code</a> is on GitHub.</li>
<li>Page 24: &#8220;The secret to making large Javascript applications is not make large Javascript applications&#8221;.</li>
<li><a href="http://plugins.jquery.com/project/HJS">HJS plugin</a> for jQuery for a nice syntax to create classes.</li>
<li><a href="https://github.com/kriskowal/es5-shim">ES5-shim</a> for browsers that don&#8217;t support Ecmascript 5 yet.</li>
<li>Chapter 2 was a very good introduction about events. removeEventListener (p. 41), stopPropagation/preventDefault (p. 43), list of properties (p. 44), load vs. DOMContentLoaded (p. 45), delegating events (p. 46) and custom events (p. 47-49), among others.</li>
<li>Reference to <a href="http://michaux.ca/articles/javascript-namespacing">blog post about namespacing</a>.</li>
<li>Object.create discussed on page 55.</li>
<li>Using URL hash for URLs on pages 82, 83.</li>
<li>Didn&#8217;t really understand the explanation for the HTML5 history API on p. 85. Alternatively, see the <a href="http://dev.opera.com/articles/view/introducing-the-html5-history-api/">HTML5 history API</a> on Dev Opera.</li>
<li>Very interesting file API on p. 103 and p. 111. Forget the drag-n-drop (<a href="http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html">reason</a>) and the copy/paste.</li>
<li>Tips about when to load your Javascript on p. 156.</li>
<li>The JavascriptMVC chapter was brilliant, see p. 208-213 for the class syntax (nicer and more compact, supports this._super()), p. 210 for instrospection and namespaces, p. 211, 212 for model attributes and observables, and p. 213 for setters. Very cool server encapsulation on p. 215. Type conversion and CRUD events on p. 218. JMVC views on p. 219. Templated actions and final example on p. 226-228.</li>
</ul>
<p>Note that all page references are pages in the PDF file, not pages in the book!</p>
<h2>Wrapping up</h2>
<p>This book is packed with very practical information and <em>a lot</em> of code that will teach you how to write applications in Javascript. It builds up from relatively simple code to more advanced stuff, including tips, use of libraries, etc. It&#8217;s one of those books that makes you want to play with all the stuff you&#8217;re learning, and try it all in your next project.</p>
<p>However, sometimes the amount of code makes the book hard to read. Some parts (eg. beginning of the chapter about controllers) are a bit tiring as you have to read and understand so much code, esp. if you&#8217;re not that used to reading more-or-less advanced Javascript. It also lacks information about some important tools like <a href="http://www.opera.com/dragonfly/">Dragonfly</a> (it almost feels like there&#8217;s nothing for developing with Opera) or <a href="http://code.google.com/p/js-test-driver/">js-test-driver</a>.</p>
<p>In summary, this is the perfect book if you know <em>a bit</em> of Javascript and want to learn modern techniques and libraries that will get you started in <em>serious</em> client-side programming. <em>Especially</em> if you are one of those server-side programmers that don&#8217;t like Javascript but has to use it anyway (because despite all its warts, it&#8217;s a really nice language!). If you&#8217;re a Javascript wizard and you have been developing client-side code for years, this book may not be for you.</p>
 <p><a href="http://hcoder.org/?flattrss_redirect&amp;id=1168&amp;md5=083124645c164fd06570fbd5e5ccfc84" title="Flattr" target="_blank"><img src="http://hcoder.org/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://hcoder.org/2011/09/20/book-review-javascript-web-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30124&amp;popout=1&amp;url=http%3A%2F%2Fhcoder.org%2F2011%2F09%2F20%2Fbook-review-javascript-web-applications%2F&amp;language=en_GB&amp;category=text&amp;title=Book+review%3A+Javascript+Web+Applications&amp;description=This+is+my+review+of+%26%238220%3BJavascript+Web+Applications%26%238221%3B+by+Alex+MacCaw%2C+part+of+the+O%26%238217%3BReilly+Blogger+Review+Program+%28in+a+nutshell%3A+you+can+choose+an+ebook+from+a+given+selection%2C...&amp;tags=books%2Cjavascript%2Cprogramming%2Creview%2Cweb%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

