<?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>The Endeavour &#187; Computing</title>
	<atom:link href="http://www.johndcook.com/blog/category/computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johndcook.com/blog</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Fri, 10 Feb 2012 23:03:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Speeding up simulation with recurrence relation</title>
		<link>http://www.johndcook.com/blog/2012/01/30/simulation-recurrence-relation/</link>
		<comments>http://www.johndcook.com/blog/2012/01/30/simulation-recurrence-relation/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 14:09:18 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10567</guid>
		<description><![CDATA[Last week I wrote about how memoization reduced a simulation&#8217;s execution time from 300 hours down to 38 minutes. This weekend I came up with a different approach that reduces the time down to 21 minutes by taking advantage of a recurrence relation.
The most expensive function in the simulation has four integer arguments. Each time [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I wrote about how <a href="http://www.johndcook.com/blog/2012/01/26/memoization/">memoization</a> reduced a simulation&#8217;s execution time from 300 hours down to 38 minutes. This weekend I came up with a different approach that reduces the time down to 21 minutes by taking advantage of a recurrence relation.</p>
<p>The most expensive function in the simulation has four integer arguments. Each time the function is called, one of the arguments is incremented by 1. A random process determines which argument is incremented each time. This function has a set of recurrence relations that make it faster to calculate a new value if you have a previously computed value for adjacent arguments.</p>
<p>The recurrence relation approach is about 100x faster than the memoization approach for small runs. However, the time per run with memoization decreases with each run. The longer it runs, the more values it caches, and so the greater the chances that a value has already been computed. In the end, the recurrence relation is about 2x faster than the memoization approach. With an even larger run, I suspect the time for the two approaches would be roughly equal.</p>
<p>The new approach is faster, but it was more work to implement, and it depends critically on the assumption that consecutive arguments differ only by one increment of one argument.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2012/01/26/memoization/">20 weeks down to 20 minutes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/30/simulation-recurrence-relation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twenty weeks down to twenty minutes</title>
		<link>http://www.johndcook.com/blog/2012/01/26/memoization/</link>
		<comments>http://www.johndcook.com/blog/2012/01/26/memoization/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 00:39:15 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10549</guid>
		<description><![CDATA[I had a simulation this week that I estimated would take 20 weeks to run. This estimate was based on too small a run. A more reliable estimate based on a longer run was 300 CPU hours, about two weeks running on a single processor. Before I split the problem up to run in parallel, [...]]]></description>
			<content:encoded><![CDATA[<p>I had a simulation this week that I estimated would take 20 weeks to run. This estimate was based on too small a run. A more reliable estimate based on a longer run was 300 CPU hours, about two weeks running on a single processor. Before I split the problem up to run in parallel, I wanted to see if I could make each thread run faster.</p>
<p>The most expensive part of the simulation is a function that takes in four integer parameters and does a numerical integration. Each parameter could be any value from 0 to 120. So in principle there are 121^4 = 214,358,881 possible parameter combinations. I knew that some of these combinations were extremely unlikely or impossible, so I thought I could reduce the execution time by caching the most commonly called parameters. Maybe a few thousand arguments would account for most of the function calls.</p>
<p>I saved the function arguments and computed values in map, a.k.a. dictionary, associative array, etc. (The buzz word for this is <em>memoization</em>.) I set a maximum size on the map because I thought it could grow very large. Even if, say, a thousand arguments accounted for most of the function calls, maybe there were many more that only appeared once.</p>
<p>It turned out that the function was only called with 408 distinct parameter combinations. That means the same integrals were being evaluated millions of times. Caching these values reduced the execution time by a factor of about 800. In other words, the software could retrieve a previously computed value 800x faster than compute it from scratch.</p>
<p>The simulation that would have taken 300 hours took only 22 minutes, and so there was no need to make it run in parallel.</p>
<p><strong>Update</strong>: I found a bug in my hashing algorithm. After fixing the bug, the time to run my simulations increased to 38 minutes. So my speed-up was a about a factor of 420 rather than 800, but still enough to run on one thread over lunch. The number of distinct arguments to the numerical integration was much more than 408 in the corrected program, but still small enough to cache.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/26/memoization/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The most brutal man page</title>
		<link>http://www.johndcook.com/blog/2012/01/25/most-brutal-man-page/</link>
		<comments>http://www.johndcook.com/blog/2012/01/25/most-brutal-man-page/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 03:14:02 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10538</guid>
		<description><![CDATA[In The Linux Command Line, the author describes the bash man page* as &#8220;the most brutal man page of them all.&#8221;
Many man pages are hard to read, but I think that the grand prize for difficulty has to go to the man page for bash. As I was doing my research for this book, I [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.amazon.com/gp/product/1593273894/ref=as_li_ss_tl?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1593273894">The Linux Command Line</a>, the author describes the <code>bash</code> man page* as &#8220;the most brutal man page of them all.&#8221;</p>
<blockquote><p>Many man pages are hard to read, but I think that the grand prize for difficulty has to go to the man page for <code>bash</code>. As I was doing my research for this book, I gave it a careful review to ensure that I was covering most of its topics. When printed, it’s over 80 pages long and extremely dense, and its structure makes absolutely no sense to a new user.</p>
<p>On the other hand, it is very accurate and concise, as well as being extremely complete. So check it out if you dare, and look forward to the day when you can read it and it all makes sense.</p></blockquote>
<p>* If you&#8217;re not familiar with Unix lingo, &#8220;man&#8221; stands for &#8220;manual&#8221;. Man pages are online documentation.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2012/01/25/the-linux-command-line/">Review of The Linux Command Line</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/25/most-brutal-man-page/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Review: The Linux Command Line</title>
		<link>http://www.johndcook.com/blog/2012/01/25/the-linux-command-line/</link>
		<comments>http://www.johndcook.com/blog/2012/01/25/the-linux-command-line/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 13:00:33 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10515</guid>
		<description><![CDATA[No Starch Press recently released The Linux Command Line: A Complete Introduction by William E. Shotts, Jr.
True to its name, the book is about using Linux from command line. It&#8217;s not an encyclopedia of Linux. It doesn&#8217;t explain how to install Linux, doesn&#8217;t go into system APIs, and says little about how to administer Linux. [...]]]></description>
			<content:encoded><![CDATA[<p>No Starch Press recently released <a href="http://www.amazon.com/gp/product/1593273894/ref=as_li_ss_tl?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1593273894">The Linux Command Line: A Complete Introduction</a> by William E. Shotts, Jr.</p>
<p>True to its name, the book is about using Linux from command line. It&#8217;s not an encyclopedia of Linux. It doesn&#8217;t explain how to install Linux, doesn&#8217;t go into system APIs, and says little about how to administer Linux. At the same time, the book is broader than just a book on <code>bash</code>. It&#8217;s about how to &#8220;live&#8221; at the command line.</p>
<p>The introduction explains the intended audience.</p>
<blockquote><p>This book is for Linux users who have migrated from other platforms. Most likely you are a &#8220;power user&#8221; of some version of Microsoft Windows.</p></blockquote>
<p>The book has a conversational style, explaining the motivation behind ways of working as well as providing technical detail. It includes small but very useful suggestions along the way, the kinds of tips you&#8217;d pick up from a friend but might not find in a book.</p>
<p>The book has four parts</p>
<ol>
<li>Learning the shell</li>
<li>Configuration and the environment</li>
<li>Common tasks and essential tools</li>
<li>Writing shell scripts</li>
</ol>
<p>The book could have just included the first three sections; the forth part is a bit more specialized than the others. If you&#8217;d prefer, think of the book has having three parts, plus a lengthy appendix on shell scripting.</p>
<p>The Linux Command Line is pleasant to read. It has a light tone, while also getting down to business.</p>
<p><a href="http://www.amazon.com/gp/product/1593273894/ref=as_li_ss_il?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1593273894"><img src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;Format=_SL160_&amp;ASIN=1593273894&amp;MarketPlace=US&amp;ID=AsinImage&amp;WS=1&amp;tag=theende-20&amp;ServiceVersion=20070822" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=theende-20&amp;l=as2&amp;o=1&amp;a=1593273894" border="0" alt="" width="1" height="1" /></p>
<p><strong>Related post</strong>:<br />
<a href="http://www.johndcook.com/blog/2011/08/06/perverse-hipster-desire-for-retro-computing/"><br />
Perverse hipster desire for retro-computing</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/25/the-linux-command-line/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Rushing to see numbers</title>
		<link>http://www.johndcook.com/blog/2012/01/19/rushing-to-see-numbers/</link>
		<comments>http://www.johndcook.com/blog/2012/01/19/rushing-to-see-numbers/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 14:10:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10476</guid>
		<description><![CDATA[Scientific programmers and algebra students start out with analogous bad habits.
Beginning algebra students rush to enter numbers into a calculator. They find it comforting to reduce expressions to floating point numbers as frequently as possible. This is understandable, but it&#8217;s a habit they need to break for numerous reasons: it&#8217;s more work, harder for a [...]]]></description>
			<content:encoded><![CDATA[<p>Scientific programmers and algebra students start out with analogous bad habits.</p>
<p>Beginning algebra students rush to enter numbers into a calculator. They find it comforting to reduce expressions to floating point numbers as frequently as possible. This is understandable, but it&#8217;s a habit they need to break for numerous reasons: it&#8217;s more work, harder for a grader to follow, less accurate, etc. Better to do as much calculation as possible with symbols, then stick in numbers at the end.</p>
<p>A similar phenomena happens in scientific programming. We&#8217;re anxious to see numbers, so we print out numbers as soon as we produce them. There&#8217;s a tendency to sprinkle code with <code>printf</code> statements, then write scripts to scrape text output to gather results.</p>
<p>It&#8217;s better to keep numbers in data structures as long as possible, then dump the data to text as the last step. Why? For one thing, the output format might change: instead of a text dump, maybe you&#8217;ll want to put the data in a database or format it as an HTML table. More importantly, the &#8220;last step&#8221; will often change. What was the last step now becomes the next-to-last step because you think of something else to do. So you do more with the data in memory before producing output, rather than scraping the text output.</p>
<p>I quickly learned to delay plugging numbers into algebraic expressions. It took me longer to learn not to output numeric results until the last moment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/19/rushing-to-see-numbers/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>double.Epsilon != DBL_EPSILON</title>
		<link>http://www.johndcook.com/blog/2012/01/05/double-epsilon-dbl_epsilon/</link>
		<comments>http://www.johndcook.com/blog/2012/01/05/double-epsilon-dbl_epsilon/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 14:44:57 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10383</guid>
		<description><![CDATA[Here&#8217;s a pitfall in C# that keeps coming up. C# has a constant double.Epsilon that programmers coming from C naturally assume is the same as C&#8217;s DBL_EPSILON. It&#8217;s not. In fact, the former is hundreds of orders of magnitude smaller.
C#&#8217;s double.Epsilon is the closest floating point number to 0. C&#8217;s DBL_EPSILON is the distance between [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a pitfall in C# that keeps coming up. C# has a constant <code>double.Epsilon</code> that programmers coming from C naturally assume is the same as C&#8217;s <code>DBL_EPSILON</code>. It&#8217;s not. In fact, the former is hundreds of orders of magnitude smaller.</p>
<p>C#&#8217;s <code>double.Epsilon</code> is the closest floating point number to 0. C&#8217;s <code>DBL_EPSILON</code> is the distance between 1 and the closest floating point number greater than 1. Said another way, <code>DBL_EPSILON</code> is the smallest positive floating point number <code>x</code> such that <code>1 + x != 1</code>, often called &#8220;machine epsilon.&#8221;</p>
<p>Typically <code>double.Epsilon</code> is on the order of 10^-324 and <code>DBL_EPSILON</code> is on the order of 10^-16. (These values could potentially change depending on the platform, but they hardly ever do.)</p>
<p>C# has no constant corresponding to <code>DBL_EPSILON</code>. This is unfortunate, since this constant appears frequently in numerical software. Why? Because it tells you, for example, when to stop adding series. </p>
<p>If <code>DBL_EPSILON</code> is on the order of 10^-16, that means that if you add two numbers that differ by more than 16 orders of magnitude, the sum doesn&#8217;t change. If you&#8217;re summing a decreasing series of numbers, say in order to evaluate a Taylor approximation, you might as well stop once the next term is 16 orders of magnitude smaller than the sum. If you keep going past that point, you&#8217;ll burn CPU cycles but you won&#8217;t change your answer.</p>
<p><code>DBL_EPSILON</code> is almost always about 10^-16.  But by giving it a name, you avoid having 10^-16 as a mysterious constant throughout code. And if your code should ever move to an environment with different floating point resolution, your code will correctly adjust to the new platform.</p>
<p><strong>Related links</strong>: </p>
<p><a href="http://www.codeproject.com/KB/cs/numprogrammingcs.aspx">An introduction to numerical programming in C#</a><br />
<a href="http://www.johndcook.com/blog/2009/04/06/anatomy-of-a-floating-point-number/">Anatomy of a floating point number</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/05/double-epsilon-dbl_epsilon/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Just what do you mean by &#8217;scale&#8217;?</title>
		<link>http://www.johndcook.com/blog/2012/01/04/just-what-do-you-mean-by-scale/</link>
		<comments>http://www.johndcook.com/blog/2012/01/04/just-what-do-you-mean-by-scale/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 13:00:00 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10370</guid>
		<description><![CDATA[&#8220;Fancy algorithms are slow when n is small, and n is usually small.&#8221; &#8212; Rob Pike
Someone might object that Rob Pike&#8217;s observation is irrelevant. Everything is fast when the problem size n is small, so design your code to be efficient for large n and don&#8217;t worry about small n. But it&#8217;s not that simple.
Suppose [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Fancy algorithms are slow when <em>n</em> is small, and <em>n</em> is usually small.&#8221; &#8212; Rob Pike</p>
<p>Someone might object that Rob Pike&#8217;s observation is irrelevant. Everything is fast when the problem size <em>n</em> is small, so design your code to be efficient for large <em>n</em> and don&#8217;t worry about small <em>n</em>. But it&#8217;s not that simple.</p>
<p>Suppose you have two sorting algorithms, Simple Sort and Fancy Sort. Simple Sort is more efficient for lists with less than 50 element and Fancy Sort is more efficient for lists with more than 50 elements.</p>
<p>You could say that Fancy Sort scales better. What if <em>n</em> is a billion? Fancy Sort could be a lot faster.</p>
<p>But there&#8217;s another way a problem could scale. Instead of sorting <em>longer</em> lists, you could sort <em>more</em> lists. What if you have a billion lists of size 40 to sort?</p>
<p>People toss around the term &#8220;scaling,&#8221; assuming everyone has the same notion of scaling. But projects could scale along different dimensions. Whether Simple Sort or Fancy Sort scales better depends on how the problem scales.</p>
<p>The sorting example just has two dimensions: the length of each list and the number of lists. Software trade-offs are often much more complex. The more dimensions a problem has, the more opportunities there are for competing solutions to each claim that it scales better.</p>
<p><strong>Related posts</strong>:</p>
<ul>
<li><a href="http://www.johndcook.com/blog/2011/03/23/appropriate-scale/">Appropriate scale</a></li>
<li><a href="http://www.johndcook.com/blog/2008/07/16/scaling-the-number-of-projects/">Scaling the number of projects</a></li>
<li><a href="http://www.johndcook.com/blog/2010/07/19/stupidity-scales/">Stupidity scales</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/04/just-what-do-you-mean-by-scale/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Moore&#8217;s law squared</title>
		<link>http://www.johndcook.com/blog/2012/01/01/moores-law-squared/</link>
		<comments>http://www.johndcook.com/blog/2012/01/01/moores-law-squared/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 23:39:35 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Optimization]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10354</guid>
		<description><![CDATA[In a review of linear programming solvers from 1987 to 2002, Bob Bixby says that solvers benefited as much from algorithm improvements as from Moore&#8217;s law.
Three orders of magnitude in machine speed and three orders of magnitude in algorithmic speed add up to six orders of magnitude in solving power. A model that might have [...]]]></description>
			<content:encoded><![CDATA[<p>In a review of linear programming solvers from 1987 to 2002, Bob Bixby says that solvers benefited as much from algorithm improvements as from Moore&#8217;s law.</p>
<blockquote><p>Three orders of magnitude in machine speed and three orders of magnitude in algorithmic speed add up to six orders of magnitude in solving power. A model that might have taken a year to solve 10 years ago can now solve in less than 30 seconds.</p></blockquote>
<p>Source: <a href="http://www.amazon.com/gp/product/0691152705/ref=as_li_ss_tl?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0691152705">In Pursuit of the Traveling Salesman</a></p>
<p><a href="http://www.amazon.com/gp/product/0691152705/ref=as_li_ss_il?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0691152705"><img src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&amp;Format=_SL110_&amp;ASIN=0691152705&amp;MarketPlace=US&amp;ID=AsinImage&amp;WS=1&amp;tag=theende-20&amp;ServiceVersion=20070822" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=theende-20&amp;l=as2&amp;o=1&amp;a=0691152705" border="0" alt="" width="1" height="1" /></p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2011/10/14/moores-law/">A brief note on Moore&#8217;s law</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2012/01/01/moores-law-squared/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Advantages of everything-is-text</title>
		<link>http://www.johndcook.com/blog/2011/12/30/advantages-of-everything-is-text/</link>
		<comments>http://www.johndcook.com/blog/2011/12/30/advantages-of-everything-is-text/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 15:10:29 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10327</guid>
		<description><![CDATA[In a typical Windows program, some output text can be copied as text but some is only an image. For example, the text in the body of a document is text, but the words on the menus are not. The text in a dialog box may or may not be.
In Emacs, text is just text, [...]]]></description>
			<content:encoded><![CDATA[<p>In a typical Windows program, some output text can be copied as text but some is only an image. For example, the text in the body of a document is text, but the words on the menus are not. The text in a dialog box may or may not be.</p>
<p>In Emacs, text is just text, no matter where you see it. This means that Emacs is less visually interesting because there is less variety. But this also has several advantages that may not be immediately obvious. I&#8217;ll give a couple examples.</p>
<p>The Emacs directory editor <code>dired</code> lists files in a text buffer. The output is essentially the output of <code>ls</code>. (On Windows, Emacs emulates <code>ls</code>.) That means you can do anything to the output you could do to text: copy, paste, search, etc. No text is off-limits. And in editable mode, you can rename files just by editing their names. You could, for example, rename many files at once using regular expressions.</p>
<p>Dired also lets you navigate the file system with the same commands you use to edit files. In particular, you can keep your hands on the keyboard. (It&#8217;s possible to <a href="http://www.johndcook.com/blog/2009/12/11/windows-file-explorer-keyboard-shortcuts/">use the Windows file explorer without a mouse</a>, but it&#8217;s limited and awkward.)</p>
<p>Another advantage of everything simply being text is that you can run a shell inside Emacs. Why not? A shell is just text output. In an ordinary shell, editing commands are mostly limited to the current line. Not all text is created equal. But when you&#8217;re running a shell inside an editor, all text <em>is</em> equal: current line, previous lines, and text on either side of the command prompt. And if you want a transcript of a shell session, just save the buffer displaying the session.</p>
<p>If you&#8217;re shopping for a text editor and spend an hour trying each one out, Emacs may not look very promising. It has odd terminology, weird key strokes, etc. But if you try Emacs long enough, and particularly if you have someone to help you get started, you start to appreciate the advantages of subtle features such as everything simply being a text buffer. </p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2011/12/24/the-importance-of-being-textual/">The importance of being textual</a><br />
<a href="http://www.johndcook.com/blog/2011/06/09/mental-context-switches-are-evil/">Mental context switches are evil</a><br />
<a href="http://www.johndcook.com/blog/2011/04/15/personal-organization-software/">Personal organization software</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/12/30/advantages-of-everything-is-text/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Selective use of technology</title>
		<link>http://www.johndcook.com/blog/2011/12/08/selective-use-of-technology-2/</link>
		<comments>http://www.johndcook.com/blog/2011/12/08/selective-use-of-technology-2/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 13:49:40 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Creativity]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=10148</guid>
		<description><![CDATA[In his book The Nine, Jeffrey Toobin gives a few details of former Supreme Court Justice David Souter&#8217;s decidedly low-tech life. Souter has no cell phone or voice mail. He does not use email. He was given a television once but never turned it on. He moves his chair around his office throughout the day [...]]]></description>
			<content:encoded><![CDATA[<p>In his book <a href="http://www.amazon.com/gp/product/0385516401?ie=UTF8&amp;tag=theende-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0385516401">The Nine</a>, Jeffrey Toobin gives a few details of former Supreme Court Justice David Souter&#8217;s decidedly low-tech life. Souter has no cell phone or voice mail. He does not use email. He was given a television once but never turned it on. He moves his chair around his office throughout the day so he can read by natural light. Toobin says Souter lives something like an eighteenth century gentleman.</p>
<p>I find it interesting that Justice Souter would have such independence of mind that he chooses not to use much of the technology that our world takes for granted. He made it to the top of his profession and had a job for life, so he could afford to be eccentric. But he wasn&#8217;t born on the Supreme Court. I would like to know whether his low-tech work habits developed before or after his legal success.</p>
<p>I imagine most readers of this blog could more easily relate to Donald Knuth than David Souter. Knuth obviously doesn&#8217;t reject technology, but he is selective in how he uses it.</p>
<p>I had the opportunity to see Knuth speak while I was in college. Much to my surprise, his slides were handwritten. The author of TeX didn&#8217;t see the need to use TeX for his slides. While he cares about the <a href="http://www-cs-faculty.stanford.edu/~knuth/cm.html">fine details</a> of how math looks in print, he apparently didn&#8217;t feel it was worth the effort to typeset his notes for an informal presentation.</p>
<p>In 1990 Knuth decided to stop using email.</p>
<blockquote><p>I&#8217;d used email since about 1975, and it seems to me that 15 years of email is plenty for one lifetime. Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things.</p></blockquote>
<p>I believe I&#8217;ve read that Knuth does most of his work on a Linux box with no network connection. He also has a Mac for creating graphics and using the Internet. He has a secretary to handle his correspondence, including email.</p>
<p>If you&#8217;re reading legal briefs by sunlight, your thoughts will not be exactly the same as they would be if you were reading by fluorescent light. If you&#8217;re writing a presentation by hand, you&#8217;re not going to think the same way you would if you were pecking on a computer keyboard. And if you do use a computer, your thinking is subtlety different depending on what program you use. Technology affects the way you think. The effect is not uniformly better or worse, but it is certainly real.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/06/11/create-offline-analyze-online/">Create offline, analyze online</a><br />
<a href="http://www.johndcook.com/blog/2009/04/21/tim-brays-high-tech-monastic-cell/">Tim Bray’s high-tech monastic cell</a><br />
<a href="http://www.johndcook.com/blog/2009/04/02/living-within-chosen-limits/">Living within chosen limits</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/12/08/selective-use-of-technology-2/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Unix tool tips</title>
		<link>http://www.johndcook.com/blog/2011/11/10/unix-tool-tips/</link>
		<comments>http://www.johndcook.com/blog/2011/11/10/unix-tool-tips/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 03:06:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=9908</guid>
		<description><![CDATA[I&#8217;ve renamed my SedAwkTip twitter account to UnixToolTip to reflect its new scope. If you were following SedAwkTip, there&#8217;s no need to do anything. You&#8217;ll just see a different name.
I have about a week&#8217;s worth of sed and awk tips scheduled. Then I&#8217;ll start adding in tips on grep, find, uniq, etc. And I&#8217;ll come [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve renamed my SedAwkTip twitter account to <a href="https://twitter.com/#!/unixtooltip">UnixToolTip</a> to reflect its new scope. If you were following SedAwkTip, there&#8217;s no need to do anything. You&#8217;ll just see a different name.</p>
<p>I have about a week&#8217;s worth of <code>sed</code> and <code>awk</code> tips scheduled. Then I&#8217;ll start adding in tips on <code>grep</code>, <code>find</code>, <code>uniq</code>, etc. And I&#8217;ll come back to <code>sed</code> and <code>awk</code> now and then.</p>
<p>These tools came from the Unix world, but they&#8217;re also available on <a href="http://gnuwin32.sourceforge.net/packages.html">Windows</a>.</p>
<p>For now I&#8217;m keeping the original icon. I&#8217;m open to suggestions if someone has an idea for a better icon.</p>
<p><a href="https://twitter.com/#!/unixtooltip"><img class="alignnone" src="http://www.johndcook.com/SedAwk_32.png" alt="s///" width="32" height="32" /></a></p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2011/09/06/thermonuclear-word-processor/">Thermonuclear word processor</a><br />
<a href="http://www.johndcook.com/blog/2011/08/06/perverse-hipster-desire-for-retro-computing/">Retro computing</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/11/10/unix-tool-tips/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More than sed and awk</title>
		<link>http://www.johndcook.com/blog/2011/11/08/more-than-sed-and-awk/</link>
		<comments>http://www.johndcook.com/blog/2011/11/08/more-than-sed-and-awk/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 14:34:17 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=9891</guid>
		<description><![CDATA[I&#8217;m going to expand the content of my SedAwkTip twitter account. I&#8217;ve covered the most commonly used features of sed and awk, and rather than go into more advanced/obscure features of these languages, I&#8217;m going to add tips on other common command line software.
I&#8217;ll probably change the name of the account to reflect the new [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to expand the content of my <a href="http://twitter.com/SedAwkTip">SedAwkTip</a> twitter account. I&#8217;ve covered the most commonly used features of <code>sed</code> and <code>awk</code>, and rather than go into more <a href="http://www.johndcook.com/blog/2011/09/13/advanced-or-just-obscure/">advanced/obscure</a> features of these languages, I&#8217;m going to add tips on other common command line software.</p>
<p>I&#8217;ll probably change the name of the account to reflect the new content. I&#8217;ll cycle back to <code>sed</code> and <code>awk</code> tips now and then.</p>
<p><strong>Update</strong>: I&#8217;ve renamed SedAwkTip to <a href="https://twitter.com/#!/unixtooltip">UnixToolTip</a>.</p>
<p>The applications I plan to go into ship as part of Linux and OS X, and they&#8217;re available for Windows <a href="http://gnuwin32.sourceforge.net/packages.html">here</a>.</p>
<p><strong>Other daily tip Twitter accounts</strong>:</p>
<p>Computing: <a href="http://twitter.com/CompSciFact"></a></p>
<ul>
<li><a href="http://twitter.com/CompSciFact">CompSciFact</a></li>
<li><a href="http://twitter.com/#!/SciPyTip">SciPyTip</a></li>
<li><a href="http://twitter.com/SansMouse">SansMouse</a></li>
<li><a href="http://twitter.com/TeXtip">TeXtip</a></li>
<li><a href="http://twitter.com/RegexTip">RegexTip</a></li>
</ul>
<p>Math:</p>
<ul>
<li><a href="http://twitter.com/AlgebraFact">AlgebraFact</a></li>
<li><a href="http://twitter.com/probfact">ProbFact</a></li>
<li><a href="http://twitter.com/AnalysisFact">AnalysisFact</a></li>
<li><a href="http://twitter.com/TopologyFact">TopologyFact</a></li>
<li><a href="http://twitter.com/statfact">StatFact</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/11/08/more-than-sed-and-awk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Software knowledge shelf life</title>
		<link>http://www.johndcook.com/blog/2011/10/18/software-shelf-life/</link>
		<comments>http://www.johndcook.com/blog/2011/10/18/software-shelf-life/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 11:54:48 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=9392</guid>
		<description><![CDATA[In my experience, software knowledge has a longer useful shelf life in the Unix world than in the Microsoft world. (In this post Unix is a shorthand for Unix and Linux.)
A pro-Microsoft explanation would say that Microsoft is more progressive, always improving their APIs and tools, and that Unix is stagnant.
A pro-Unix explanation would say [...]]]></description>
			<content:encoded><![CDATA[<p>In my experience, software knowledge has a longer useful shelf life in the Unix world than in the Microsoft world. (In this post Unix is a shorthand for Unix and Linux.)</p>
<p>A pro-Microsoft explanation would say that Microsoft is more progressive, always improving their APIs and tools, and that Unix is stagnant.</p>
<p>A pro-Unix explanation would say that Unix got a lot of things right the first time, that it is more stable, and that Microsoft&#8217;s technology turn-over is more churn than progress.</p>
<p>Pick your explanation. But for better or worse, change comes slower on the Unix side. And when it comes, it&#8217;s less disruptive.</p>
<p>At least that&#8217;s how it seems to me. Although I&#8217;ve used Windows and Unix, I&#8217;ve done different kinds of work on the two platforms. Maybe the pace of change relates more to the task than the operating system. Also, I have more experience with Windows and so perhaps I&#8217;m more aware of the changes there. But most of the things I knew about Unix 20 years ago are still useful, and most the things I knew about Windows 10 years ago are not.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2011/02/28/programmers-without-computers/">Programmers without computers</a><br />
<a href="http://www.johndcook.com/blog/2010/06/30/where-the-unix-philosophy-breaks-down/">Where the Unix philosophy breaks down</a><br />
<a href="http://www.johndcook.com/blog/2011/03/28/software-development-and-the-myth-of-progress/">Software development and the myth of progress</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/10/18/software-shelf-life/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>A brief note on Moore&#8217;s law</title>
		<link>http://www.johndcook.com/blog/2011/10/14/moores-law/</link>
		<comments>http://www.johndcook.com/blog/2011/10/14/moores-law/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 12:35:41 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=9648</guid>
		<description><![CDATA[One variation on Moore&#8217;s law says that computer performance doubles every 18 months. Another says performance improves by a factor of 100 every decade. The two are equivalent, though the latter sounds more impressive.
Exponential growth doesn&#8217;t mesh well with human intuition. Scott Berkun said &#8220;Technological progress is overestimated in the short term, underestimated in the [...]]]></description>
			<content:encoded><![CDATA[<p>One variation on Moore&#8217;s law says that computer performance doubles every 18 months. Another says performance improves by a factor of 100 every decade. The two are equivalent, though the latter sounds more impressive.</p>
<p><a href="http://www.johndcook.com/blog/2008/01/17/coping-with-exponential-growth/">Exponential growth</a> doesn&#8217;t mesh well with human intuition. Scott Berkun said &#8220;Technological progress is overestimated in the short term, underestimated in the long term.&#8221; This is probably not limited to technology but true of exponential growth in general.</p>
<p>(Why are the two statements of Moore&#8217;s law equivalent? The first says performance grows like exp( log(2) t / 1.5 ) and the second says it grows like exp( log(100) t / 10 ). And log(2) / 1.5 = 0.462 and log(100)/10 = 0.461.)</p>
<p><strong>Related post</strong>:<br />
<a href="http://www.johndcook.com/blog/2008/01/09/moores-law-and-software-bloat/"><br />
Moore&#8217;s law and software bloat</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/10/14/moores-law/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>System administration in remote areas</title>
		<link>http://www.johndcook.com/blog/2011/08/14/system-administration-in-remote-areas/</link>
		<comments>http://www.johndcook.com/blog/2011/08/14/system-administration-in-remote-areas/#comments</comments>
		<pubDate>Sun, 14 Aug 2011 18:20:47 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=9146</guid>
		<description><![CDATA[Last February I interviewed Rick Richter, CIO of Food for the Hungry, a Christian relief and development organization. This morning I spoke with Rick and was reminded of some of the challenges involved in supporting computers in poor parts of the world. 
Traveling to areas most in need of relief is arduous. You may, for [...]]]></description>
			<content:encoded><![CDATA[<p>Last February I interviewed Rick Richter, CIO of Food for the Hungry, a Christian relief and development organization. This morning I spoke with Rick and was reminded of some of the challenges involved in supporting computers in poor parts of the world. </p>
<p>Traveling to areas most in need of relief is arduous. You may, for example, have two or three days of travel by land or water after your airplane lands. So naturally you want to do as much system administration remotely as you can. </p>
<p>In general you can&#8217;t expect broadband in the poorest areas, though there are some surprises. You often have to rely on satellite connections, though these are slow, unreliable, and expensive. Dial-up is preferable, if you can get it. Bandwidth may be adequate for command line access, though even then the latency is annoying. Video conferencing (e.g. for showing someone how to do something) is out of the question. So remote locations need to be mostly self-sufficient.  </p>
<p>To read more about Food for the Hungry and their computing environment, see <a href="http://www.johndcook.com/blog/2011/02/08/why-food-for-the-hungry-runs-ubuntu/">Why Food for the Hungry runs Ubuntu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/08/14/system-administration-in-remote-areas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perverse hipster desire for retro-computing</title>
		<link>http://www.johndcook.com/blog/2011/08/06/perverse-hipster-desire-for-retro-computing/</link>
		<comments>http://www.johndcook.com/blog/2011/08/06/perverse-hipster-desire-for-retro-computing/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 22:34:52 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=9100</guid>
		<description><![CDATA[Here&#8217;s my favorite line from an article Life on the Command Line by Stephen Ramsay:
I also don’t do this [work from the command line] out of some perverse hipster desire for  retro-computing. I have work to do. If my system didn’t work, I’d  abandon it tomorrow.
That&#8217;s refreshing. Some of the more ardent command [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s my favorite line from an article <a href="http://lenz.unl.edu/2011/04/09/life-on-the-command-line.html">Life on the Command Line</a> by Stephen Ramsay:</p>
<blockquote><p>I also don’t do this [work from the command line] out of some perverse hipster desire for  retro-computing. I have work to do. If my system didn’t work, I’d  abandon it tomorrow.</p></blockquote>
<p>That&#8217;s refreshing. Some of the more ardent command line advocates give the impression that they use the command line out of pride rather than out of a desire to get work done. Ramsay is recommending his way of working, not bragging about what he&#8217;s able to do. He has some interesting ideas, especially in his follow-up article <a href="http://lenz.unl.edu/2011/07/25/the-mythical-man-finger.html">The Mythical Man-Finger</a>.</p>
<p>By the way, I&#8217;m no command line wizard; I&#8217;m a fairly typical computer user. On the other hand, my use of the command line and Emacs has been increasing.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/03/25/confusing-familiar-with-simple/">Confusing familiar with simple</a><br />
<a href="http://www.johndcook.com/blog/2011/05/05/superficial-convenience/">Superficial convenience</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/08/06/perverse-hipster-desire-for-retro-computing/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Two-finger scrolling on Windows</title>
		<link>http://www.johndcook.com/blog/2011/07/19/two-finger-scrolling-on-windows/</link>
		<comments>http://www.johndcook.com/blog/2011/07/19/two-finger-scrolling-on-windows/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 02:56:35 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8964</guid>
		<description><![CDATA[One of my favorite features of Mac laptops is two-finger scrolling. This lets you scroll down a long document similar to the way the middle wheel does on a Windows mouse.
I mentioned on Twitter this evening that it would be nice if Windows had this feature. Apparently many newer Windows laptops come with this capability.  [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favorite features of Mac laptops is two-finger scrolling. This lets you scroll down a long document similar to the way the middle wheel does on a Windows mouse.</p>
<p>I mentioned on Twitter this evening that it would be nice if Windows had this feature. Apparently many newer Windows laptops come with this capability.  <a href="http://twitter.com/#!/TheCodeFoundry">Todd Brooks</a> replied that my laptop might be able to the two-finger scroll if I <a href="http://m.engadget.com/default/article.do?artUrl=http://www.engadget.com/2010/03/19/synaptics-driver-enables-multitouch-gestures-on-older-trackpads/&amp;category=classic&amp;postPage=1">upgraded my touchpad driver</a>. He was right. I went to the Microsoft Update site and saw that one of the optional updates was exactly what Todd suggested I install.</p>
<p>So far it seems that the two-finger scrolling on my ThinkPad isn&#8217;t as smooth as it is on a MacBook Pro, but it&#8217;s still nice to have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/07/19/two-finger-scrolling-on-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sorting</title>
		<link>http://www.johndcook.com/blog/2011/07/04/sorting/</link>
		<comments>http://www.johndcook.com/blog/2011/07/04/sorting/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 20:25:45 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8851</guid>
		<description><![CDATA[From Knuth&#8217;s book Sorting and Searching:
Computer manufacturers of the 1960&#8217;s estimated that more than 25 percent of the running time of their computers was spent on sorting, when all their customers were taken into account. In fact, there were many installations in which the task of sorting was responsible for more than half of the [...]]]></description>
			<content:encoded><![CDATA[<p>From Knuth&#8217;s book <a href="http://www.amazon.com/gp/product/0201896850/ref=as_li_ss_tl?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=0201896850">Sorting and Searching</a>:</p>
<blockquote><p>Computer manufacturers of the 1960&#8217;s estimated that more than 25 percent of the running time of their computers was spent on sorting, when all their customers were taken into account. In fact, there were many installations in which the task of sorting was responsible for more than half of the computing time. From these statistics we may conclude that either</p>
<ol>
<li>there are many important applications of sorting, or</li>
<li>many people sort when they shouldn&#8217;t, or</li>
<li>inefficient sorting algorithms have been in common use.</li>
</ol>
</blockquote>
<p>Computing has changed since the 1960&#8217;s, but not so much that sorting has gone from being extraordinarily important to unimportant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/07/04/sorting/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>From the world, to the world</title>
		<link>http://www.johndcook.com/blog/2011/07/01/from-the-world-to-the-world/</link>
		<comments>http://www.johndcook.com/blog/2011/07/01/from-the-world-to-the-world/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 13:02:29 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8839</guid>
		<description><![CDATA[Edmund Harriss describes an interesting pattern he sees in mathematics and constructivist art in his interview on Strongly Connected Components. For most of history, mathematics and art have been fairly direct abstractions of physical reality. Then in the 20th century both became more and more abstract. But then a sort of reversal took place. After [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://maxwelldemon.com/edmund-harriss/">Edmund Harriss</a> describes an interesting pattern he sees in mathematics and constructivist art in his <a href="http://acmescience.com/shows/scc-shows/723">interview</a> on Strongly Connected Components. For most of history, mathematics and art have been fairly direct abstractions of physical reality. Then in the 20th century both became more and more abstract. But then a sort of reversal took place. After reaching heights of abstraction &#8212; Harriss cites Gödel and Picasso as examples &#8212; both mathematics and art began to apply abstractions back to the physical world.</p>
<p style="padding-left: 30px;">… starting from clearly abstract structures and building something real from the abstract rather than abstracting something from the real. … You have models that you can then apply to the world rather than models you took from the world.</p>
<p>Stephen Wolfram has an analogous idea about computer programs. Until now we have written programs to solve specific problems. Wolfram suggests we reverse this and explore the space of all possible computer programs. As he demonstrates in his <a href="http://www.amazon.com/gp/product/1579550088/ref=as_li_ss_tl?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=1579550088">magnum opus</a>, simple programs can have surprisingly complex behavior. We may be able to find some relatively small but useful programs that way.</p>
<p>As Edmund Harriss alludes, people have successfully applied very abstract mathematics, mathematics developed with no physical application in mind, to physical problems. I&#8217;m more skeptical of Stephen Wolfram&#8217;s proposal.</p>
<p>Suppose you find a program that appears to solve some problem, such as optimally controlling a nuclear reactor. How do you really know what it does? You didn&#8217;t write it; you found it. It wasn&#8217;t designed to solve the problem; you discovered that it (apparently) solves the problem. Wolfram is optimistic that we could discover programs that we might never be able to write. But a program that powerful would likely also be impossible to thoroughly understand.When Wolfram says &#8220;Look what interesting behavior tiny programs can have!&#8221; I think &#8220;Look how hard it can be to understand arbitrary programs even when they&#8217;re small!&#8221;</p>
<p>Computer science might not be that helpful in determining what a found program does. It is theoretically impossible to write a program that can always determine whether another program stops. We would have to study the program empirically. This process would be more like squeezing an extract from some plant root and testing its medicinal properties than designing drugs.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/07/21/what-does-this-code-do/">What does this code do?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/07/01/from-the-world-to-the-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Platform lock-in</title>
		<link>http://www.johndcook.com/blog/2011/06/22/platform-lock-in/</link>
		<comments>http://www.johndcook.com/blog/2011/06/22/platform-lock-in/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 12:05:57 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8759</guid>
		<description><![CDATA[From Baron Schwartz speaking at the O&#8217;Reilly Media MySQL Conference:
We talk about proprietary vendor lock-in, but in many cases the reality is that anyone who uses any platform, even an open source one, ends up being locked-in to some extent. Switching is something you just can&#8217;t contemplate after a while.
]]></description>
			<content:encoded><![CDATA[<p>From Baron Schwartz <a href="http://itc.conversationsnetwork.org/shows/detail4867.html">speaking</a> at the O&#8217;Reilly Media MySQL Conference:</p>
<blockquote><p>We talk about proprietary vendor lock-in, but in many cases the reality is that anyone who uses any platform, even an open source one, ends up being locked-in to some extent. Switching is something you just can&#8217;t contemplate after a while.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/06/22/platform-lock-in/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Software under-represents reality</title>
		<link>http://www.johndcook.com/blog/2011/06/20/software-under-represents-reality/</link>
		<comments>http://www.johndcook.com/blog/2011/06/20/software-under-represents-reality/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 14:51:43 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Quotes]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8739</guid>
		<description><![CDATA[From Jaron Lanier:
I love software, but software always under-represents reality. Reality has this depth to it and potential for surprise and subtlety that you just can&#8217;t get from software.
Related posts:
The bipolar Internet
Underwhelmed with progress
Make something and sell it
]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://singularityblog.singularitysymposium.com/jaron-lanier-on-singularity-1-on-1-the-singularity-is-a-religion-for-geeks/">Jaron Lanier</a>:</p>
<blockquote><p>I love software, but software always under-represents reality. Reality has this depth to it and potential for surprise and subtlety that you just can&#8217;t get from software.</p></blockquote>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/12/28/the-bipolar-internet/">The bipolar Internet</a><br />
<a href="http://www.johndcook.com/blog/2010/02/24/underwhelmed-with-progress/">Underwhelmed with progress</a><br />
<a href="http://www.johndcook.com/blog/2010/01/22/make-something-and-sell-it/">Make something and sell it</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/06/20/software-under-represents-reality/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Clutter-discoverability trade-off</title>
		<link>http://www.johndcook.com/blog/2011/06/01/clutter-discoverability/</link>
		<comments>http://www.johndcook.com/blog/2011/06/01/clutter-discoverability/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 11:51:19 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[MS Office]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8637</guid>
		<description><![CDATA[There&#8217;s a tension between presenting a user an uncluttered interface and helping the user discover new features. This post will begin by discussing two extreme examples. On the cluttered but discoverable end of the spectrum is Microsoft Word 2007. On the uncluttered but also undiscoverable end is Emacs.
Microsoft added the ribbon toolbar to Office 2007 [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a tension between presenting a user an uncluttered interface and helping the user discover new features. This post will begin by discussing two extreme examples. On the cluttered but discoverable end of the spectrum is Microsoft Word 2007. On the uncluttered but also undiscoverable end is Emacs.</p>
<p>Microsoft added the ribbon toolbar to Office 2007 to make it easier to discover new features. Before that release, 90% of the feature requests the Office team received were for features that Office already supported. The functionality was there, but users couldn&#8217;t discover it.</p>
<p><a href="http://www.johndcook.com/ribbon_large.png"><img src="http://www.johndcook.com/ribbon_small.png" alt="Word 2007 ribbon" width="450" height="63" /></a></p>
<p>According to <a href="http://download.microsoft.com/download/E/D/A/EDAE500D-75C8-406F-B1B4-A9FDEF477281/ebook_Microsoft_Office_2010.pdf">this report</a>, the ribbon has been remarkably successful.</p>
<blockquote><p>Data is showing that the redesign of Office really did reach this goal —  Word 2007 and Excel 2007 users are now using four times as many  features as they used in previous versions, and for PowerPoint, the  increase in feature use is a factor of five.</p></blockquote>
<p>Power users often dislike the ribbon, but most of the estimated <em>half billion</em> people who use Microsoft Office are not power users.</p>
<p>(By the way, you can collapse the ribbon with Control-F1. The ribbon will reappear when you click on a menu. On a small screen, say on a netbook, this could greatly increase your vertical real estate.)</p>
<p><a href="http://www.johndcook.com/ribbon_Control_F1_large.png"><img class="alignnone" src="http://www.johndcook.com/ribbon_Control_F1_small.png" alt="" width="318" height="36" /></a></p>
<p>In some ways Emacs may be the exact opposite of Microsoft Word. It has an enormous number of features, and yet it doesn&#8217;t feel cluttered. The downside is that discoverability in Emacs is pretty bad. The best way to discover Emacs features is to read the documentation. There are ways to discover features while using Emacs, but you have to be fairly deep into Emacs before you learn how to learn more.</p>
<p>Can you increase discoverability without adding clutter? Maybe if your design is not very good to begin with. But after some refinement it seems inevitable that you&#8217;ll have to decide whether you&#8217;re willing to increase clutter in order to increase discoverability.</p>
<p>One suggested compromise is to have interfaces adapt over time. Applications could start out with voluminous menus when discoverability is most important, then hide uncommonly used options over time, reducing clutter as users gain experience. Microsoft tried that approach in Office 2003 without much success. It sounded like a good idea, but changing menus scared novice users and annoyed advanced users.</p>
<p>A variation on this approach is to make controls visible based on context rather than based on frequency of use. People find this easier to understand.</p>
<p>The trade-off between discoverability and clutter may be a question of where you want your clutter, in the UI or in external documentation. I suppose I&#8217;d prefer the clutter in the UI for software I use rarely and in the documentation for software I use the most.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/08/24/overly-helpful-software/">Is helpful software really helpful?</a><br />
<a href="http://www.johndcook.com/blog/2008/08/08/good-user-interface-design-epipen/">Good user interface design: EpiPen</a><br />
<a href="http://www.johndcook.com/blog/2008/08/07/bad-user-interface-design-hotel-showers/">Bad user interface design: hotel showers</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/06/01/clutter-discoverability/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Bumblebee software</title>
		<link>http://www.johndcook.com/blog/2011/05/16/bumblebee-software/</link>
		<comments>http://www.johndcook.com/blog/2011/05/16/bumblebee-software/#comments</comments>
		<pubDate>Mon, 16 May 2011 12:56:52 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8520</guid>
		<description><![CDATA[Some say that aerodynamics can&#8217;t explain how a bumblebee flies. Perhaps that was once the case, but as far as I know there are no difficulties now. The bumblebee story persists as an urban legend. And it makes a nice metaphor for things that work better in practice than in theory.
Here&#8217;s the passage that brought [...]]]></description>
			<content:encoded><![CDATA[<p>Some say that aerodynamics can&#8217;t explain how a bumblebee flies. Perhaps that was once the case, but as far as I know there are no difficulties now. The bumblebee story persists as an urban legend. And it makes a nice metaphor for things that work better in practice than in theory.</p>
<p>Here&#8217;s the passage that brought the bumblebee story to mind.</p>
<blockquote><p>Almost every software engineering principle that has become generally accepted as useful and valuable, Emacs flouts. The code is 24 years old, huge, and written by hundreds of different people. By rights, the whole thing should blow up. But it works &#8212; and works rather well.</p></blockquote>
<p>This comes from Jim Blandy&#8217;s chapter in <a href="http://www.amazon.com/gp/product/059651798X/ref=as_li_ss_tl?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=059651798X">Beautiful Architecture</a>. Blandy explains that Emacs&#8217; architecture has allowed it to thrive despite some apparent disadvantages. Emacs is mostly written in its own programming language, Emacs Lisp.</p>
<blockquote><p>Emacs Lisp has no object system, it&#8217;s module system is just a naming convention, all the fundamental text editing operations use implicit global arguments, and even local variables aren&#8217;t quite local.</p></blockquote>
<p>In short, Emacs expects developers to be self-disciplined and does not enforce a great deal of external discipline. However, because the software is so light on bureaucracy, it is easy to customize and to contribute to.</p>
<p>TeX is another bumblebee project. Like Emacs, it has thrived for decades without following currently fashionable software techniques. Knuth implies in <a href="http://www.johndcook.com/blog/2010/10/04/serious-lessons-from-knuths-joke/">this presentation</a> that TeX would have been a dismal failure if it had used technologies that are trendy now.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/10/04/serious-lessons-from-knuths-joke/">Serious lessons from Knuth&#8217;s joke</a><br />
<a href="http://www.johndcook.com/blog/2010/04/01/giving-emacs-another-try/">Giving Emacs another try</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/05/16/bumblebee-software/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Command option patterns</title>
		<link>http://www.johndcook.com/blog/2011/05/12/command-option-patterns/</link>
		<comments>http://www.johndcook.com/blog/2011/05/12/command-option-patterns/#comments</comments>
		<pubDate>Thu, 12 May 2011 21:55:49 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=8340</guid>
		<description><![CDATA[Here are some common patterns in Unix command options. This is a summary of the patterns Eric Raymond describes here.








Option
Typical meaning




-a
All, append


-b
Buffer,block size, batch


-c
Command, check


-d
Debug, delete, directory


-D
Define


-e
Execute, edit


-f
File, force


-h
Headers, help


-i
Initialize


-I
Include


-k
Keep, kill


-l
List, long, load


-m
Message


-n
Number, not


-o
Output


-p
Port, protocol


-q
Quiet


-r
Recurse, reverse


-s
Silent, subject


-t
Tag


-u
User


-v
Verbose


-V
Version


-w
Width, warning


-x
Enable debugging, extract


-y
Yes


-z
Enable compression



&#160;
]]></description>
			<content:encoded><![CDATA[<p>Here are some common patterns in Unix command options. This is a summary of the patterns Eric Raymond describes <a href="http://www.catb.org/~esr/writings/taoup/html/ch10s05.html#id2948149">here</a>.</p>
<table border="2" cellspacing="0" cellpadding="6" frame="hsides" rules="groups">
<caption></caption>
<colgroup>
<col align="left"></col>
<col align="left"></col>
</colgroup>
<thead>
<tr>
<th scope="col">Option</th>
<th scope="col">Typical meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>-a</td>
<td>All, append</td>
</tr>
<tr>
<td>-b</td>
<td>Buffer,block size, batch</td>
</tr>
<tr>
<td>-c</td>
<td>Command, check</td>
</tr>
<tr>
<td>-d</td>
<td>Debug, delete, directory</td>
</tr>
<tr>
<td>-D</td>
<td>Define</td>
</tr>
<tr>
<td>-e</td>
<td>Execute, edit</td>
</tr>
<tr>
<td>-f</td>
<td>File, force</td>
</tr>
<tr>
<td>-h</td>
<td>Headers, help</td>
</tr>
<tr>
<td>-i</td>
<td>Initialize</td>
</tr>
<tr>
<td>-I</td>
<td>Include</td>
</tr>
<tr>
<td>-k</td>
<td>Keep, kill</td>
</tr>
<tr>
<td>-l</td>
<td>List, long, load</td>
</tr>
<tr>
<td>-m</td>
<td>Message</td>
</tr>
<tr>
<td>-n</td>
<td>Number, not</td>
</tr>
<tr>
<td>-o</td>
<td>Output</td>
</tr>
<tr>
<td>-p</td>
<td>Port, protocol</td>
</tr>
<tr>
<td>-q</td>
<td>Quiet</td>
</tr>
<tr>
<td>-r</td>
<td>Recurse, reverse</td>
</tr>
<tr>
<td>-s</td>
<td>Silent, subject</td>
</tr>
<tr>
<td>-t</td>
<td>Tag</td>
</tr>
<tr>
<td>-u</td>
<td>User</td>
</tr>
<tr>
<td>-v</td>
<td>Verbose</td>
</tr>
<tr>
<td>-V</td>
<td>Version</td>
</tr>
<tr>
<td>-w</td>
<td>Width, warning</td>
</tr>
<tr>
<td>-x</td>
<td>Enable debugging, extract</td>
</tr>
<tr>
<td>-y</td>
<td>Yes</td>
</tr>
<tr>
<td>-z</td>
<td>Enable compression</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/05/12/command-option-patterns/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Superficial convenience</title>
		<link>http://www.johndcook.com/blog/2011/05/05/superficial-convenience/</link>
		<comments>http://www.johndcook.com/blog/2011/05/05/superficial-convenience/#comments</comments>
		<pubDate>Fri, 06 May 2011 02:09:15 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=7676</guid>
		<description><![CDATA[Here&#8217;s an interesting phrase:
superficial convenience at the expense of real freedom
This comes from the conclusion of the 1998 essay The Elements of Style: UNIX as Literature by Thomas Scoville.  The author sums up his preference for UNIX culture by saying he prefers  the &#8220;freedom and responsibility that UNIX allows&#8221; to the &#8220;superficial  [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an interesting phrase:</p>
<blockquote><p>superficial convenience at the expense of real freedom</p></blockquote>
<p>This comes from the conclusion of the 1998 essay <a href="http://theody.net/elements.html">The Elements of Style: UNIX as Literature</a> by Thomas Scoville.  The author sums up his preference for UNIX culture by saying he prefers  the &#8220;freedom and responsibility that UNIX allows&#8221; to the &#8220;superficial  convenience&#8221; of Windows NT.</p>
<p>I&#8217;m not interested in arguing here the relative merits of Unix and Windows.  I&#8217;m more interested in broader ideas that spin off from the quote above. When is a convenience superficial? How well does  convenience versus freedom explain technological controversies?</p>
<p>I could see substituting &#8220;short-term convenience&#8221; for &#8220;superficial convenience&#8221; and substituting &#8220;long-term efficiency&#8221; for &#8220;real freedom.&#8221; But that may lose something. Thomas Scoville&#8217;s terms may be more nuanced than my substitutions.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/08/24/overly-helpful-software/">Is helpful software really helpful?</a><br />
<a href="http://www.johndcook.com/blog/2010/03/22/ford-chevy-arguments-in-tech/">Ford-Chevy arguments</a><br />
<a href="http://www.johndcook.com/blog/2009/05/14/would-you-rather-have-a-chauffeur-or-a-ferrari/">Would you rather have a chauffeur or a Ferrari?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/05/05/superficial-convenience/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Why Food for the Hungry runs Ubuntu</title>
		<link>http://www.johndcook.com/blog/2011/02/08/why-food-for-the-hungry-runs-ubuntu/</link>
		<comments>http://www.johndcook.com/blog/2011/02/08/why-food-for-the-hungry-runs-ubuntu/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 13:00:11 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=7758</guid>
		<description><![CDATA[Rick Richter is CIO of Food for the Hungry. In this interview Rick explains why his organization is moving all of its computers to Ubuntu.
John: Tell me a little about Food for the Hungry and what you do there.
Rick:  Food for the Hungry is a Christian relief and development organization. We go in to [...]]]></description>
			<content:encoded><![CDATA[<p>Rick Richter is CIO of <a href="http://www.fh.org/">Food for the Hungry</a>. In this interview Rick explains why his organization is moving all of its computers to Ubuntu.</p>
<div class="wp-caption alignnone" style="width: 439px"><a href="http://www.fh.org/work/africa/ethiopia"><img src="http://www.johndcook.com/admasu.jpeg" alt="Ethiopian farmer Ato Admasu" width="429" height="226" /></a><p class="wp-caption-text">Ethiopian farmer Ato Admasu. Photo credit Food for the Hungry.</p></div>
<p><strong>John</strong>: Tell me a little about Food for the Hungry and what you do there.</p>
<p><strong>Rick</strong>:  Food for the Hungry is a Christian relief and development organization. We go in to relief situations &#8212; maybe there has been a natural disaster or war &#8212; and provide life-sustaining needs: food, shelter,  whatever the need may be.  For example, the recent earthquake in Haiti.  But the other part of what we do is the sustained, long-term development on the community level. The idea is to work with leaders and churches  to better take care of themselves rather than relying on outside  organizations for support.</p>
<p>I&#8217;m the CIO. I&#8217;m in charge of the information and technology for the  organization. We&#8217;re in 25 countries. I have staff all over the world, about 25 people. There are about 12 who work directly for global IT,  mostly in Phoenix, and the rest in various countries.  There are also people who work directly for local offices, for example in Kenya, that coordinate with global IT. We&#8217;re responsible for about 900 computers.</p>
<p><strong>John</strong>: You and I were talking the other day about your organization&#8217;s project to move all its computers over to Ubuntu.</p>
<p><strong>Rick</strong>: We started an informal process to convert to Ubuntu two and a half  years ago. It started when my son went to Bangladesh. He spent the summer there and converted some of their computers to Ubuntu. At first we didn&#8217;t have full management support for the process. They don&#8217;t really understand it and it scares them.</p>
<p>There were individual country directors interested in the  project and I talked it up. There&#8217;s some independence in the organization to make those kind of decisions. Now, for the first time, we have full support of management for the conversion on a wide scale. I&#8217;m going to Cambodia next week. Right now they&#8217;re all running Windows  but before I leave they&#8217;ll be running Ubuntu. In Asia we probably have  about 80% of our computers on Ubuntu. We don&#8217;t have big offices in Asia. Our bigger offices are in Africa and they&#8217;re a little slower to adopt. Until now, a lot of it depended on whether the local country director was ready to change.</p>
<p>We found it was important for a number of reasons. One is security. Linux is not as vulnerable to viruses. We have so many places where  entire computer systems have been totally crippled because of viruses. A lot of networks are very primitive, so the network is basically a thumb drive between offices in a country. A thumb drive is the best way to transmit viruses you can find.</p>
<p>We&#8217;ve also found in the last few years anti-virus software has become less and less effective. Three or four years ago, if you had  up-to-date anti-virus software you wouldn&#8217;t get a virus. These days, you still get them. Some of our staff have other jobs within FH besides their IT responsibilities and may not have a lot of IT experience. As a  result, staff often do not have the time to pro-actively manage IT.</p>
<p>Another issue is maintainability. Windows computers don&#8217;t run as well over time. With Ubuntu, when we come back to a computer two years later it&#8217;s in as good a shape as we left it.</p>
<p>Linux requires much less hardware to run than Windows. We have eight- or nine-year-old computers at a lot of our sites that will no longer run or barely run Windows.</p>
<p><strong>John</strong>: So saving money on software licenses is a benefit, but not the main consideration.</p>
<p><strong>Rick</strong>:  Saving money on licenses is important, but it&#8217;s not the driving force.  We&#8217;re a non-profit and we have a contract with Microsoft where we get  pretty good prices.</p>
<p>Another reason for moving to Ubuntu is that in some countries it is very difficult to legally obtain licenses. Sometimes it&#8217;s next to impossible. You can&#8217;t buy legal Microsoft licenses in some places, or if you can, the price is outrageous. So many legalities and so many weird  hoops you have to jump through.</p>
<p>As a Christian organization we need to set a good example and make sure all our licenses are legal. We want to be clear and up-front about our software. Ubuntu eliminates that problem.</p>
<p><strong>John</strong>: What experience have you had retraining your IT people to support Linux?</p>
<p><strong>Rick</strong>: We have IT professionals and we have people who are much less skilled. Most of the IT people who do the support have really bought into it. They&#8217;re excited about it and they&#8217;re pushing it. Those who do support in  the field who have had less exposure, some of them have bought  into it, some have not as much. It requires time. It requires  dedication. It also required commitment from their management.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/07/03/open-solaris/">Robust, scalable, and the keyboard works</a><br />
<a href="http://www.johndcook.com/blog/2009/01/29/free-ubuntu-linux-book/">Free Ubuntu Linux book</a><br />
<a href="http://www.johndcook.com/blog/2010/07/07/geek-fatigue/">Geek fatigue</a><br />
<a href="http://www.johndcook.com/blog/2008/04/02/new-spin-on-the-cathedral-and-the-bazaar/">New spin on The Cathedral and the Bazaar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/02/08/why-food-for-the-hungry-runs-ubuntu/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Mac has gotten harder to use, Windows easier</title>
		<link>http://www.johndcook.com/blog/2011/02/05/jef-raskin-on-history-mac-and-windows/</link>
		<comments>http://www.johndcook.com/blog/2011/02/05/jef-raskin-on-history-mac-and-windows/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 01:16:47 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=7733</guid>
		<description><![CDATA[CHI Conversations has posted a talk by Jef Raskin, designer of the first Macintosh, entitled Macintosh: Lessons Learned, Lessons Lost. The talk was recorded in 2004, about a year before Raskin&#8217;s death. Much of the talk is devoted to Macintosh history and how inaccurately it has been reported.
Toward the end of the talk, around 55 [...]]]></description>
			<content:encoded><![CDATA[<p>CHI Conversations has posted a talk by Jef Raskin, designer of the first Macintosh, entitled <a href="http://chi.conversationsnetwork.org/shows/detail4437.html">Macintosh: Lessons Learned, Lessons Lost</a>. The talk was recorded in 2004, about a year before Raskin&#8217;s death. Much of the talk is devoted to Macintosh history and how inaccurately it has been reported.</p>
<p>Toward the end of the talk, around 55 minutes in, Raskin compares Mac and Windows.</p>
<blockquote><p>The Mac has gotten <em>harder</em> to use over the years. In fact, Windows has gotten easier. Now I can move back and forth, I can hardly notice the difference. Mac is just epsilon easier to use.</p></blockquote>
<p>Raskin complains that software bloat has outpaced Moore&#8217;s Law, a contention that was verified <a href="http://www.johndcook.com/blog/2008/01/09/moores-law-and-software-bloat/">here</a>.</p>
<div class="wp-caption alignnone" style="width: 226px"><img alt="Jef Raskin. Photo by his son Aza." src="http://www.johndcook.com/Jef_Raskin_credit_Aza.jpg" width="216" height="293" /><p class="wp-caption-text">Jef Raskin. Photo by his son Aza.</p></div>
<p><strong>Related posts</strong>:<br />
<a href="http://www.johndcook.com/blog/2008/01/09/moores-law-and-software-bloat/"><br />
Moore&#8217;s Law and software bloat</a><br />
<a href="http://www.johndcook.com/blog/2008/11/08/inside-steve-jobs-brain/">Inside Steve Jobs&#8217; Brain</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/02/05/jef-raskin-on-history-mac-and-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How long computer operations take</title>
		<link>http://www.johndcook.com/blog/2011/01/12/how-long-computer-operations-take/</link>
		<comments>http://www.johndcook.com/blog/2011/01/12/how-long-computer-operations-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 14:00:43 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=7538</guid>
		<description><![CDATA[The following table is from Peter Norvig&#8217;s essay Teach Yourself Programming in Ten Years. All times are in units of nanoseconds.



execute typical instruction
1


fetch from L1 cache memory
0.5


branch misprediction
5


fetch from L2 cache memory
7


Mutex lock/unlock
25


fetch from main memory
100


send 2K bytes over 1Gbps network
20,000


read 1MB sequentially from memory
250,000


fetch from new disk location (seek)
8,000,000


read 1MB sequentially from disk
20,000,000


send packet [...]]]></description>
			<content:encoded><![CDATA[<p>The following table is from Peter Norvig&#8217;s essay <a href="http://norvig.com/21-days.html">Teach Yourself Programming in Ten Years</a>. All times are in units of nanoseconds.</p>
<table border="0" cellspacing="4" cellpadding="4">
<tbody>
<tr>
<td>execute typical instruction</td>
<td align="right">1</td>
</tr>
<tr>
<td>fetch from L1 cache memory</td>
<td align="right">0.5</td>
</tr>
<tr>
<td>branch misprediction</td>
<td align="right">5</td>
</tr>
<tr>
<td>fetch from L2 cache memory</td>
<td align="right">7</td>
</tr>
<tr>
<td>Mutex lock/unlock</td>
<td align="right">25</td>
</tr>
<tr>
<td>fetch from main memory</td>
<td align="right">100</td>
</tr>
<tr>
<td>send 2K bytes over 1Gbps network</td>
<td align="right">20,000</td>
</tr>
<tr>
<td>read 1MB sequentially from memory</td>
<td align="right">250,000</td>
</tr>
<tr>
<td>fetch from new disk location (seek)</td>
<td align="right">8,000,000</td>
</tr>
<tr>
<td>read 1MB sequentially from disk</td>
<td align="right">20,000,000</td>
</tr>
<tr>
<td>send packet US to Europe and back</td>
<td align="right">150,000,000</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2011/01/12/how-long-computer-operations-take/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The bipolar Internet</title>
		<link>http://www.johndcook.com/blog/2010/12/28/the-bipolar-internet/</link>
		<comments>http://www.johndcook.com/blog/2010/12/28/the-bipolar-internet/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 16:49:54 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=7431</guid>
		<description><![CDATA[In a recent Atlantic article, Jaron Lanier discusses the bipolar nature of the Internet.
The Internet …  was  influenced in equal degrees by 1960s romanticism and cold war paranoia.  It aligned the two poles of the bit to these two archetypal dramas.
Lanier argues that the Internet is polarizing. Just as bits are either on [...]]]></description>
			<content:encoded><![CDATA[<p>In a recent <a href="http://www.theatlantic.com/technology/print/2010/12/the-hazards-of-nerd-supremacy-the-case-of-wikileaks/68217/">Atlantic article</a>, Jaron Lanier discusses the bipolar nature of the Internet.</p>
<blockquote><p>The Internet …  was  influenced in equal degrees by 1960s romanticism and cold war paranoia.  It aligned the two poles of the bit to these two archetypal dramas.</p></blockquote>
<p>Lanier argues that the Internet is polarizing. Just as bits are either on or off, the Internet encourages all-or-nothing options. With regard to privacy in particular, Lanier says that you can be  totally anonymous or totally open, but it&#8217;s difficult to be anywhere in  between.</p>
<p>Douglas Rushkoff makes a similar argument in <a href="http://boingboing.net/2010/09/27/program-or-be-progra.html">Chapter 3</a> of his book <a href="http://www.amazon.com/gp/product/1935928155?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1935928155">Program or Be Programmed</a>. Rushkoff argues that because computers ultimately work with 0&#8217;s and 1&#8217;s, the Internet inevitably forces people into yes-no decisions.</p>
<p>Lanier and Rushkoff have valid points, but I have a couple reservations.</p>
<p>First, I don&#8217;t see why the emergent properties of the Internet should be binary just because the underlying technology is binary. For example, I don&#8217;t imagine the Internet would be much different if computers were built on electronic components with three possible states rather than two. But I would concede that binary technology makes a good <em>metaphor</em> for discussing the binary choices one must often make on the Internet.</p>
<p>Second, I&#8217;d say that modern life forces us into discrete decisions, but this is much older than the Internet. Mass production requires limited options. If a cobbler is going to make a pair of shoes for me, he can measure my feet. But if I&#8217;m going to buy a pair of shoes from a store, I have to pick a size. Also, bureaucracies require information to fit into forms, though that was true of paper forms before the advent of electronic forms. Perhaps the Internet accentuates the need to make discrete decisions, though I&#8217;m not convinced.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/03/19/the-buck-stops-with-the-programmer/">The buck stops with the programmer</a><br />
<a href="http://www.johndcook.com/blog/2010/02/24/underwhelmed-with-progress/">Underwhelmed with progress</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/12/28/the-bipolar-internet/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Big data is not enough</title>
		<link>http://www.johndcook.com/blog/2010/12/15/big-data-is-not-enough/</link>
		<comments>http://www.johndcook.com/blog/2010/12/15/big-data-is-not-enough/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 15:19:22 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[Probability and Statistics]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=7361</guid>
		<description><![CDATA[Given enough data, correct answers jump out at you, right?
In some ways I think that scientists have misled themselves into thinking that if you collect enormous amounts of data you are bound to get the right answer. You are not bound to get the right answer unless you are enormously smart. You can narrow down [...]]]></description>
			<content:encoded><![CDATA[<p>Given enough data, correct answers jump out at you, right?</p>
<blockquote><p>In some ways I think that scientists have misled themselves into thinking that if you collect enormous amounts of data you are bound to get the right answer. You are not bound to get the right answer unless you are enormously smart. You can narrow down your questions; but <strong>enormous data sets often consist of enormous numbers of small sets of data</strong>, none of which by themselves are enough to solve the thing you are interested in, <strong>and they fit together in some complicated way</strong>.</p></blockquote>
<p>Bradley Efron, quoted in <a href="http://www.significancemagazine.org/details/magazine/879793/Bradley-Efron-.html">Significance</a>. Emphasis added.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/08/25/predicting-height-using-genes/">Predicting height from genes<br />
</a><a href="http://www.johndcook.com/blog/2009/02/18/the-data-may-not-contain-the-answer/">The data may not contain the answer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/12/15/big-data-is-not-enough/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.176 seconds -->

