<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>The Endeavour</title>
	
	<link>http://www.johndcook.com/blog</link>
	<description>The blog of John D. Cook</description>
	<lastBuildDate>Fri, 30 Jul 2010 17:20:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheEndeavour" /><feedburner:info uri="theendeavour" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Weekend miscellany</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/q8rNz9860NI/</link>
		<comments>http://www.johndcook.com/blog/2010/07/30/weekend-miscellany-48/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 17:20:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=6036</guid>
		<description><![CDATA[Science
First experimental validation of relativity fudged
Programming
Tim Bray on the state of Perl
Jason Adams&#8217; Ruby gem for random number generation 
Education
10 ways my thinking has changed
Math class needs a makeover: Dan Meyer at TED
Dumbing yourself down to get a dumb job
Life
The acceleration of addictiveness
Twitter
RegexTip starts over with basics next week
Daily tip accounts
Jazz
Hugh Lauri (House) sings the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Science</strong></p>
<p><a href="http://falkenblog.blogspot.com/2010/07/eddingtons-experiment-was-bogus.html">First experimental validation of relativity fudged</a></p>
<p><strong>Programming</strong></p>
<p><a href="http://www.tbray.org/ongoing/When/201x/2010/07/21/DPH">Tim Bray on the state of Perl</a><br />
<a href="http://rubygems.org/gems/simple-random">Jason Adams&#8217; Ruby gem for random number generation </a></p>
<p><strong>Education</strong></p>
<p><a href="http://whatedsaid.wordpress.com/2010/07/27/10-ways-my-thinking-has-changed/">10 ways my thinking has changed</a><br />
<a href="http://blog.ted.com/2010/05/13/math_class_need/">Math class needs a makeover: Dan Meyer at TED</a><br />
<a href="http://activevoice.charlesbivona.com/?p=165">Dumbing yourself down to get a dumb job</a></p>
<p><strong>Life</strong></p>
<p><a href="http://www.paulgraham.com/addiction.html">The acceleration of addictiveness</a></p>
<p><strong>Twitter</strong></p>
<p><a href="http://twitter.com/RegexTip">RegexTip starts over with basics next week</a><br />
<a href="http://www.johndcook.com/twitter/">Daily tip accounts</a></p>
<p><strong>Jazz</strong></p>
<p><a href="http://www.youtube.com/watch?v=TBQAuw4NYLA&amp;feature=player_embedded">Hugh Lauri (House) sings the blues</a><br />
<a href="http://www.youtube.com/watch?v=X8QhjwVy7Ng&#038;feature=related">Miles Davis and John Coltrane: So What</a></p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/X8QhjwVy7Ng&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/X8QhjwVy7Ng&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/q8rNz9860NI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/30/weekend-miscellany-48/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/30/weekend-miscellany-48/</feedburner:origLink></item>
		<item>
		<title>Houston secrets</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/F5qsYZcj8Zo/</link>
		<comments>http://www.johndcook.com/blog/2010/07/29/houston-secrets/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 18:13:40 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5979</guid>
		<description><![CDATA[The Engines of our Ingenuity episode Secret City discusses little-known city features. I was particularly interested in the Houston locations the show mentioned. I&#8217;ve been through the downtown tunnels John Leinhard mentions, but I was not familiar with the 1940 Air Terminal Museum or the Gable Street Power Station.
Here are three Houston-area attractions that I [...]]]></description>
			<content:encoded><![CDATA[<p>The Engines of our Ingenuity episode <a href="http://www.uh.edu/engines/epi2587.htm">Secret City</a> discusses little-known city features. I was particularly interested in the Houston locations the show mentioned. I&#8217;ve been through the downtown tunnels John Leinhard mentions, but I was not familiar with the 1940 Air Terminal Museum or the Gable Street Power Station.</p>
<p>Here are three Houston-area attractions that I find many Houstonians don&#8217;t know about.</p>
<ol>
<li> <a href="http://hals.org/">Houston Area Live Steamers</a> at Zube Park, trains that are just big enough to ride. The HALS folks are proud of their work and very friendly.</li>
<li><a href="http://www.houstonaudubon.org/default.aspx?MenuItemID=883&amp;MenuGroup=Sanctuaries2&amp;&amp;AspxAutoDetectCookieSupport=1">Edith Moore Nature Sanctuary</a>, a hidden patch of woods in the middle of Houston.</li>
<li><a href="http://www.menil.org/visit/byzantine.php">Byzantine Fresco Chapel</a> which contains the only intact Byzantine frescoes in the western hemisphere.</li>
</ol>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2008/04/13/houston-deco/">Houston Deco</a><br />
<a href="http://www.johndcook.com/blog/2008/09/21/roberts-rules-of-order-and-galveston-flooding/">Robert&#8217;s Rule of Order and Galveston flooding</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/F5qsYZcj8Zo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/29/houston-secrets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/29/houston-secrets/</feedburner:origLink></item>
		<item>
		<title>Later than you expected, but sooner than you think</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/YupM6ecNtF0/</link>
		<comments>http://www.johndcook.com/blog/2010/07/29/later-than-you-expected-but-sooner-than-you-think/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 13:26:39 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=6033</guid>
		<description><![CDATA[The title of this post is the last line of a 60-Second Science podcast. The podcast announces a recent study that says we tend to over-estimate our abilities before we start something new, but under-estimate our abilities once we get started. Sounds true to me.
]]></description>
			<content:encoded><![CDATA[<p>The title of this post is the last line of a 60-Second Science <a href="http://www.scientificamerican.com/podcast/episode.cfm?id=people-initially-overestimate-then-10-07-27">podcast</a>. The podcast announces a recent study that says we tend to over-estimate our abilities before we start something new, but under-estimate our abilities once we get started. Sounds true to me.</p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/YupM6ecNtF0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/29/later-than-you-expected-but-sooner-than-you-think/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/29/later-than-you-expected-but-sooner-than-you-think/</feedburner:origLink></item>
		<item>
		<title>Rosenbrock’s banana function</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/BIC80l6mQuI/</link>
		<comments>http://www.johndcook.com/blog/2010/07/28/rosenbrocks-banana-function/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 15:13:43 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Math]]></category>
		<category><![CDATA[Mathematica]]></category>
		<category><![CDATA[Optimization]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=6005</guid>
		<description><![CDATA[Rosenbrock&#8217;s banana function is a famous test case for optimization software. It&#8217;s called the banana function because of its curved contours.

The definition of the function is

The function has a global minimum at (1, 1). If an optimization method starts at the point (-1.2, 1), it has to find its way to the other side of [...]]]></description>
			<content:encoded><![CDATA[<p>Rosenbrock&#8217;s banana function is a famous test case for optimization software. It&#8217;s called the banana function because of its curved contours.</p>
<p style="text-align:center"><img src="http://www.johndcook.com/banana1.png" alt="" width="360" height="359" /></p>
<p>The definition of the function is</p>
<p style="text-align:center"><img src="http://www.johndcook.com/banana0.png" alt="f(x, y) = (1 - x)^2 + 100(y - x^2)^2" width="238" height="19" /></p>
<p>The function has a global minimum at (1, 1). If an optimization method starts at the point (-1.2, 1), it has to find its way to the other side of a flat, curved valley to find the optimal point.</p>
<p>Rosenbrock&#8217;s banana function is just one of the canonical test functions in the paper &#8220;Testing Unconstrained Optimization Software&#8221; by Moré, Garbow, and Hillstrom in <em>ACM Transactions on Mathematical Software</em> Vol. 7, No. 1, March 1981, pp 17-41. The starting point (-1.2, 1) mentioned above comes from the starting point required in that paper.</p>
<p>I mentioned a while back that I was trying out <a href="http://www.johndcook.com/blog/2010/07/09/replacing-mathematica-with-python/">Python alternatives</a> for tasks I have done in Mathematica. I tried making contour plots with Python using <code>matplotlib</code>. This was challenging to figure out. The plots did not look very good, though I imagine I could have made satisfactory plots if I had explored the options. Instead, I fired up Mathematica and produced the plot above easily using the following code.</p>
<pre>Banana[x_, y_] := (1 - x)^2 + 100 (y - x*x)^2
ContourPlot[Banana[x, y], {x, -1.5, 1.5}, {y, 0.7, 2.0}]
</pre>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/BIC80l6mQuI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/28/rosenbrocks-banana-function/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/28/rosenbrocks-banana-function/</feedburner:origLink></item>
		<item>
		<title>Miscellaneous Emacs adventures</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/CDA4GKmyYJA/</link>
		<comments>http://www.johndcook.com/blog/2010/07/28/miscellaneous-emacs-adventures/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:43:23 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>
		<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=6010</guid>
		<description><![CDATA[I recently found out there&#8217;s an Emacs command M-x woman that&#8217;s a pun on “w/o man”, i.e. a way to read online help without using the usual man command.
***
I tried to edit a 1.2 GB text file with Emacs the other day. I got an error saying that Emacs has a 500 MB file size [...]]]></description>
			<content:encoded><![CDATA[<p>I recently found out there&#8217;s an Emacs command <code>M-x woman</code> that&#8217;s a pun on “w/o <code>man</code>”,<em> i.e.</em> a way to read online help without using the usual <code>man</code> command.</p>
<p style="text-align: center;">***</p>
<p>I tried to edit a 1.2 GB text file with Emacs the other day. I got an error saying that Emacs has a 500 MB file size limit on 32-bit systems. This was on a 32-bit Windows XP machine, so the warning was reasonable. I appreciated that it promptly said it could not open the file.</p>
<p>I tried again on my 64-bit Windows 7 machine and got the same message; I believe I&#8217;m running a 32-bit version of Emacs on my 64-bit PC.</p>
<p>I also tried opening the file with Emacs on a 64-bit Red Hat Enterprise Linux box with 16 GB of memory. This time I did not get a file size message. Instead, Emacs crashed.</p>
<p>The file opened quickly on Windows, even my 32-bit XP box, using Notepad++.</p>
<p style="text-align: center;">***</p>
<p>When I set up Emacs on Windows, I created an &#8220;Open with Emacs&#8221; context menu following the instructions <a href="http://www.johndcook.com/emacs_windows.html#explorer">here</a>. That has worked well except for two problems.</p>
<ol>
<li>Every file is opened in a new instance of Emacs.</li>
<li>It stopped working on one of my computers for reasons unknown.</li>
</ol>
<p>I&#8217;ve been meaning to solve the first problem, and when the second happened I decided it was time. According to the <a href="http://www.gnu.org/software/emacs/windows/Installing-Emacs.html">Emacs documentation</a>,</p>
<blockquote><p>The recommended way to associate files is to associate them with<br />
<code>emacsclientw.exe</code>.  In order for this to work when Emacs is not yet started, you will also need to set the environment variable <code>ALTERNATE_EDITOR</code> to <code>runemacs.exe</code>.  To open files in a running instance of Emacs, you will need to add the following to your init file: <code>(server-start)</code></p></blockquote>
<p>I had to tinker with that a little to make it work. I know I had to add the path to my Emacs <code>bin</code> directory to my <code>PATH</code> environment variable but I don&#8217;t remember what else I did.</p>
<p>The key thing to note is that you should associate files with <code>emacsclientw.exe</code> rather than with <code>runemacs.exe</code>. I used the instructions in <a href="http://support.microsoft.com/kb/258860">this article</a> to remove the association with the latter. Thanks to <a href="http://twitter.com/marknca">Mark</a> for pointing out the article.</p>
<p>(The Windows &#8220;Open with&#8221; feature remains a mystery. The article above explains how to remove a program from the &#8220;Open with&#8221; list, and the directions worked for removing <code>runemacs.exe</code>. But they did not work for removing other programs. I&#8217;m also unclear how you add something to the &#8220;Open with&#8221; list. If you right-click on a file and select &#8220;Open with -&gt; Choose program &#8230;&#8221; the program you select may appear in the &#8220;Open with&#8221; list next time. Or not. This did add <code>emacsclientw.exe</code> to the list.)</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/05/13/emacs-a-few-weeks-later/">Emacs a few weeks later</a><br />
<a href="http://www.johndcook.com/blog/2010/06/11/not-for-everyone/">Not for everyone</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/CDA4GKmyYJA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/28/miscellaneous-emacs-adventures/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/28/miscellaneous-emacs-adventures/</feedburner:origLink></item>
		<item>
		<title>Remapping Caps Lock</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/UqB-Qv1FeBk/</link>
		<comments>http://www.johndcook.com/blog/2010/07/27/remapping-caps-lock/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 14:52:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5955</guid>
		<description><![CDATA[I remap the Caps Lock key to be a control key on every computer that I use regularly. Here&#8217;s why.

Caps Lock is a nearly worthless key taking up valuable real estate.
I&#8217;m more likely to use Caps Lock accidentally than intentionally.
I use the Control key far more often than the Caps Lock key.
The Caps Lock key [...]]]></description>
			<content:encoded><![CDATA[<p>I remap the Caps Lock key to be a control key on every computer that I use regularly. Here&#8217;s why.</p>
<ol>
<li>Caps Lock is a nearly worthless key taking up valuable real estate.</li>
<li>I&#8217;m more likely to use Caps Lock accidentally than intentionally.</li>
<li>I use the Control key far more often than the Caps Lock key.</li>
<li>The Caps Lock key is in a consistent position on all keyboards but the left Control key isn&#8217;t.</li>
</ol>
<p>Some people swap the Caps Lock and and left Control keys. I prefer to just disable the left Control key. On desktop keyboards, I map the useless Scroll Lock key to act as a Caps Lock key for those rare instances when I actually want to type a long sequence of capital letters.</p>
<p><a href="http://www.tucows.com/preview/327616">KeyTweak</a> is a convenient program for remapping a Windows keyboard.</p>
<p>On Linux, you can use the <code>xmodmap</code> utility.The following commands disable the left Control key and turn the Caps Lock key into a control key.</p>
<pre>xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "remove Control = Control_L"
xmodmap -e "keysym Caps_Lock = Control_L"
xmodmap -e "add Control = Control_L"
</pre>
<p>See Dave Richeson&#8217;s <a href="http://www.johndcook.com/blog/2010/07/27/remapping-caps-lock/#comment-42955">comment</a> below for Mac instructions.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/12/02/41-dumb-things-to-check/">41 dumb things to check</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/UqB-Qv1FeBk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/27/remapping-caps-lock/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/27/remapping-caps-lock/</feedburner:origLink></item>
		<item>
		<title>Sine approximation for small angles</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/F5Swp56v8DU/</link>
		<comments>http://www.johndcook.com/blog/2010/07/27/sine-approximation-for-small-x/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 12:00:54 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5607</guid>
		<description><![CDATA[For small angles, sin(θ) is approximately θ. This post takes a close look at this familiar approximation.
I was confused when I first heard that sin(θ) ≈ θ for small θ. My thought was &#8220;Of course they&#8217;re approximately equal. All small numbers are approximately equal to each other.&#8221; I also was confused by the footnote &#8220;The [...]]]></description>
			<content:encoded><![CDATA[<p>For small angles, sin(θ) is approximately θ. This post takes a close look at this familiar approximation.</p>
<p>I was confused when I first heard that sin(θ) ≈ θ for small θ. My thought was &#8220;Of course they&#8217;re approximately equal. All small numbers are approximately equal to each other.&#8221; I also was confused by the footnote &#8220;The angle θ must be measured in radians.&#8221; If the approximation is just saying that small angles have small sines, it doesn&#8217;t matter whether you measure in radians or degrees. <strong>I missed the point</strong>, as I imagine most students do. I run into people who have completed math or science degrees without understanding this tidbit from their freshman year.</p>
<p>The point is that the error in the approximation sin(θ) ≈ θ is small, even <strong>relative to the size of θ</strong>. If θ is small, the error in the approximation sin(θ) ≈ θ is really, really small. I use the phrase &#8220;really, really&#8221; in a precise sense; I&#8217;m not just talking like an eight-year-old child. If θ is small, θ<sup>2</sup> is really small and θ<sup>3</sup> is really, really small.</p>
<p>For small values of θ, say θ &lt; 1, the difference between sin(θ) and θ is very nearly θ<sup>3</sup>/6 and so the absolute error is really, really small. The relative error is about θ<sup>2</sup>/6. If the absolute error is really, really small, the relative error is really small.</p>
<p>The approximation sin(θ) ≈ θ comes from a Taylor series,<strong> but there&#8217;s more going on</strong> than that. For example, the approximation log(1 + <em>x</em>) ≈ <em>x</em> also comes from a Taylor series, but that approximation is not nearly as accurate.</p>
<p>The Taylor series for log(1 + <em>x</em>) is</p>
<p style="padding-left: 30px;"><em>x</em> &#8211; <em>x</em><sup>2</sup>/2 + <em>x</em><sup>3</sup>/3 &#8211; &#8230;</p>
<p>This means that for small <em>x</em>, log(1 + <em>x</em>) is approximately <em>x</em>, and the error in the approximation is roughly <em>x</em><sup>2</sup>/2. So if <em>x</em> is small, the absolute error in the approximation is really small and the relative error is small. Notice this is one less &#8220;really&#8221; than the analogous statement about sines.</p>
<p>The reason the sine approximation is one &#8220;really&#8221; better than the log approximation is that sine is an odd function, so its Taylor series has only odd terms. The error is approximately the first term left out. The series for sin(θ) is</p>
<p style="padding-left: 30px;">θ &#8211; θ<sup>3</sup> / 3! + θ<sup>5</sup>/5! &#8211; &#8230;</p>
<p>so sin(θ) &#8211; θ is on the order of θ<sup>3</sup>, not just θ<sup>2</sup>.</p>
<p><strong>We can say even more</strong>. Not only is the error in sin(θ) ≈ θ <em>approximately</em> θ<sup>3</sup>/6, it is in fact <em>bounded by</em> θ<sup>3</sup>/6 for small, positive θ. This comes from the alternating series theorem. When you make an approximation from an <em>alternating</em> Taylor series, the error is bounded by the first term you leave out. The argument has to be small enough that the terms of the series decrease in absolute value. For example, if you  stick  θ = 1 into the series for sine, each term of the series is smaller than the previous one. But if you stick in θ = 2 then the terms get larger before they get smaller. So the precise meaning of &#8220;small enough&#8221; is small enough that the terms of the alternating series decrease in absolute value.</p>
<p>The series for log(1 + <em>x</em>) also alternates, so the error estimate is also an upper bound on the error in that case. Not all series are alternating series. But when we do have an alternating series, we get a bonus as far as being able to control the error in approximations.</p>
<p>It&#8217;s also true that for small θ, cos(θ) is approximately 1. At first this may seem analogous to saying that for small θ, sin(θ) is approximately 0. While both are true, the former is much better.</p>
<p>The series for cosine is</p>
<p>1 &#8211; θ<sup>2</sup>/2! + θ<sup>4</sup>/4! &#8211; &#8230;</p>
<p>and so the error in approximating cos(θ) with 1 is approximately θ<sup>2</sup>/2. In fact, since the series alternates, the error is <em>bound by</em> θ<sup>2</sup>/2, if θ is small enough. And in this case the relative error is approximately equal to the absolute error. This says that for small θ, the approximation cos(θ) ≈ 1 is really, really good. By contrast, saying that sin(θ) ≈ 0 for small θ is a bad approximation: the absolute error is approximately θ and the relative error is 100%. Rounding small values of θ down to 0 produces a very good approximation in one context and a poor approximation in another context.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/01/12/sales-tax-included/">Sales tax included</a><br />
<a href="http://www.johndcook.com/blog/2010/02/18/economizing-approximations/">Economizing approximations</a><br />
<a href="http://www.johndcook.com/blog/2010/04/29/simple-approximation-to-normal-distribution/">Simple approximation to normal distribution</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/F5Swp56v8DU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/27/sine-approximation-for-small-x/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/27/sine-approximation-for-small-x/</feedburner:origLink></item>
		<item>
		<title>Woodpeckers</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/TKUtujkCZsc/</link>
		<comments>http://www.johndcook.com/blog/2010/07/26/woodpeckers/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 15:48:14 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5960</guid>
		<description><![CDATA[From The Dip:
A woodpecker can peck twenty times on a thousand trees and get nowhere, but stay busy. Or he can peck twenty-thousand times on one tree and get dinner.
]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://www.amazon.com/gp/product/1591841666?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591841666">The Dip</a>:</p>
<p style="padding-left: 30px;">A woodpecker can peck twenty times on a thousand trees and get nowhere, but stay busy. Or he can peck twenty-thousand times on one tree and get dinner.</p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/TKUtujkCZsc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/26/woodpeckers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/26/woodpeckers/</feedburner:origLink></item>
		<item>
		<title>Weekend miscellany</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/iNtDj7CSFBo/</link>
		<comments>http://www.johndcook.com/blog/2010/07/23/weekend-miscellany-47/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 20:39:43 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5951</guid>
		<description><![CDATA[Every weekend I post a list of miscellaneous links. Sometimes these links fall into categories, as they did on June 26. Other times, like this week, they&#8217;re just an eclectic assortment of links.
Free software for opening hundreds of file types
Actor career trajectories
Podcast: Travels in a mathematical world
Windows start-up music from version 3.1 to Vista
Creativity and [...]]]></description>
			<content:encoded><![CDATA[<p>Every weekend I post a list of miscellaneous links. Sometimes these links fall into categories, as they did on <a href="http://www.johndcook.com/blog/2010/06/26/weekend-miscellany-43/">June 26</a>. Other times, like this week, they&#8217;re just an eclectic assortment of links.</p>
<p><a href="http://www.openwith.org/">Free software for opening hundreds of file types</a></p>
<p><a href="http://wmbriggs.com/blog/?p=2658">Actor career trajectories</a></p>
<p><a href="http://www.travelsinamathematicalworld.co.uk/">Podcast: Travels in a mathematical world</a></p>
<p><a href="http://www.youtube.com/watch?v=uD7q0VolrHM">Windows start-up music from version 3.1 to Vista</a></p>
<p><a href="http://www.getfinch.com/finch/entry/the_creativity_trigger/">Creativity and motivation</a></p>
<p><a href="http://sixrevisions.com/web_design/a-comprehensive-guide-to-microsoft-vista-fonts-for-designers/">Windows Vista fonts for designers</a></p>
<p><a href="http://blog.asmartbear.com/unfair-advantages.html">&#8220;Unfair&#8221; advantages for entrepreneurs</a></p>
<p><a href="http://twentytwowords.com/2010/07/18/and-you-thought-you-loved-books/">Book lovers</a></p>
<p>Benoit Mandelbrot speaking about fractals and such at <a href="http://www.ted.com/talks/view/id/909">TED</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/BenoitMandelbrot_2010-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/BenoitMandelbrot-2010.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=909&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=benoit_mandelbrot_fractals_the_art_of_roughness;year=2010;theme=numbers_at_play;event=TED2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/dynamic/BenoitMandelbrot_2010-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/BenoitMandelbrot-2010.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=909&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=benoit_mandelbrot_fractals_the_art_of_roughness;year=2010;theme=numbers_at_play;event=TED2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" bgcolor="#ffffff" wmode="transparent" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/iNtDj7CSFBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/23/weekend-miscellany-47/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/23/weekend-miscellany-47/</feedburner:origLink></item>
		<item>
		<title>Windows XP and Ubuntu start-up music</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/UPtNiOZA6i8/</link>
		<comments>http://www.johndcook.com/blog/2010/07/23/windows-xp-and-ubuntu-start-up-music/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 17:05:25 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5962</guid>
		<description><![CDATA[I just realized that the start-up music for Ubuntu is a variation on the start-up music for Windows XP. (You can hear the Ubuntu theme in this video at around 0:10. The Windows XP theme is in this video at around 1:16.) If you don&#8217;t hear the similarity, concentrate on the rhythm rather than the [...]]]></description>
			<content:encoded><![CDATA[<p>I just realized that the start-up music for Ubuntu is a variation on the start-up music for Windows XP. (You can hear the Ubuntu theme in <a href="http://www.youtube.com/watch?v=4kdTclek0Vg">this video</a> at around 0:10. The Windows XP theme is in <a href="http://www.youtube.com/watch?v=uD7q0VolrHM">this video</a> at around 1:16.) If you don&#8217;t hear the similarity, concentrate on the rhythm rather than the melody.</p>
<p>The Ubuntu music style is African, like the word <em>ubuntu</em>. It was influenced by Windows, like the Ubuntu user interface, but it&#8217;s a new composition.</p>
<p>I&#8217;ve been running Ubuntu on a virtual machine. The sound quality was so bad that I never clearly heard Ubuntu start up. But I recently installed Ubuntu on a physical machine and heard the start-up music clearly for the first time.</p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/UPtNiOZA6i8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/23/windows-xp-and-ubuntu-start-up-music/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/23/windows-xp-and-ubuntu-start-up-music/</feedburner:origLink></item>
		<item>
		<title>What does this code do?</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/IyCaytyNMB0/</link>
		<comments>http://www.johndcook.com/blog/2010/07/21/what-does-this-code-do/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 12:37:29 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5745</guid>
		<description><![CDATA[At the SciPy 2010 conference, a speaker showed several short code samples and asked us what each sample did. The samples were clearly written, but we had no comments to provide context. This was the last sample.

def what( x, n ):
    if n &#60; 0:
        [...]]]></description>
			<content:encoded><![CDATA[<p>At the SciPy 2010 conference, a speaker showed several short code samples and asked us what each sample did. The samples were clearly written, but we had no comments to provide context. This was the last sample.</p>
<pre class="brush: python;">
def what( x, n ):
    if n &lt; 0:
        n = -n
        x = 1.0 / x
    z = 1.0
    while n &gt; 0:
        if n % 2 == 1:
            z *= x
        x *= x
        n /= 2
    return z
</pre>
<p>The quiz was at the end of the day and I was tired. I couldn&#8217;t tell what the code does. Then I found out to my chagrin that the sample above implements an algorithm I know well. I&#8217;ve written the same code and I&#8217;ve even blogged about here.</p>
<p>This exercise changed my opinion of &#8220;self-documenting&#8221; code. Without some contextual clue, it is hard to understand the purpose of even a small piece of code. </p>
<p>Meaningful variable and function names would have helped, but a tiny comment might have helped even more. Not some redundant comment like explaining that the line <code>x = 1.0 / x </code> takes a reciprocal, but a comment explaining the problem the code is trying to solve.</p>
<p>For another example, what do you think this code does?</p>
<pre class="brush: csharp;">
uint what()
{
    m_z = 36969 * (m_z &amp; 65535) + (m_z &gt;&gt; 16);
    m_w = 18000 * (m_w &amp; 65535) + (m_w &gt;&gt; 16);
    return (m_z &lt;&lt; 16) + (m_w &amp; 65535);
}
</pre>
<p>It&#8217;s clear enough what the code does at a low level &mdash; it&#8217;s just a few operations &mdash; but it&#8217;s not at all clear what it&#8217;s <em>for</em>.</p>
<p>Try to figure out what the code samples do before reading further. But if you give up, the first example is described <a href="http://www.johndcook.com/blog/2008/12/10/fast-exponentiation/">here</a> and the second example comes from <a href="http://www.codeproject.com/KB/recipes/SimpleRNG.aspx">here</a>.</p>
<p>In an ordinary face-to-face conversation, more information is conveyed non-verbally than verbally. We may think that our literal words are most important, but so much is conveyed by voice inflection, facial expression, posture, etc. Something similar is going on with source code. When we read a piece of source code, we typically bring a huge amount of implicit knowledge with us. </p>
<p>Suppose a coworker Sam asks you to look at his code. The fact that the question came up at work provides a large amount of context; this isn&#8217;t just a random code fragment on the web. More specifically, you know what kinds of projects Sam works on. You know why Sam wants you to look at the code. He may be showing you something he&#8217;s proud of or he may be asking for help finding a bug. You know a lot about his code before you see it.</p>
<p>Now suppose you&#8217;re a contractor. Sam was <a href="http://www.johndcook.com/blog/2008/09/28/programmer-hit-by-a-bus/">hit by a bus</a> and you&#8217;ve been asked to work on his projects until he gets out of the hospital. You may complain to his office mate that Sam&#8217;s code is an awful mess, but she can&#8217;t understand what you&#8217;re talking about. She thinks his code is perfectly clear.</p>
<p>Now suppose you&#8217;re a contractor on the opposite side of the world from Sam. You have even less context than if you were in his office talking to his office mate. After a great deal of agony, you send your contribution back to Sam&#8217;s company. You comment your code beautifully, but Sam&#8217;s colleagues complain that your code is poorly written and that you didn&#8217;t solve the right problem. </p>
<p>Institutional memory is more valuable than source code comments. It costs a great deal to replace a programmer, even one who leaves behind well-commented code. </p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/04/22/being-indispensable/">Do you really want to be indispensable?</a><br />
<a href="http://reproducibleresearch.org/blog/2009/03/17/preserving-documents/">Preserving (the memory of) documents</a><br />
<a href="http://www.johndcook.com/blog/2009/03/19/the-buck-stops-with-the-programmer/">The buck stops with the programmer</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/IyCaytyNMB0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/21/what-does-this-code-do/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/21/what-does-this-code-do/</feedburner:origLink></item>
		<item>
		<title>e-book formats</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/i2jigWAHieo/</link>
		<comments>http://www.johndcook.com/blog/2010/07/20/e-book-formats/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 13:43:42 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5930</guid>
		<description><![CDATA[ManyBooks.net has nearly 28,000 free e-books available for download. Each book is available in 23 different formats.
I wondered what software they used to create so many formats and how popular each format is. The site answers both these questions. This page lists the software used and this page lists the popularity statistics.
PDF is not as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://manybooks.net/">ManyBooks.net</a> has nearly 28,000 free e-books available for download. Each book is available in 23 different formats.</p>
<p>I wondered what software they used to create so many formats and how popular each format is. The site answers both these questions. <a href="http://manybooks.net/about/">This page</a> lists the software used and <a href="http://manybooks.net/format_stats.php">this page</a> lists the popularity statistics.</p>
<p>PDF is not as dominant as I would have expected. It is the most popular format, but it only accounts for 20% of downloads. Here&#8217;s a bar chart of the downloads per format. Click on the graph for a larger version.</p>
<p><a href="http://www.johndcook.com/ebooks_large.png"><img alt="" src="http://www.johndcook.com/ebooks_small.png" class="alignnone" width="450" height="340" /></a></p>
<p>See also Wikipedia&#8217;s <a href="http://en.wikipedia.org/wiki/Comparison_of_e-book_formats">comparison of e-book formats</a>.</p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/i2jigWAHieo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/20/e-book-formats/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/20/e-book-formats/</feedburner:origLink></item>
		<item>
		<title>Stupidity scales</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/By6BfHDEzAk/</link>
		<comments>http://www.johndcook.com/blog/2010/07/19/stupidity-scales/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 14:00:00 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Simplicity]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5815</guid>
		<description><![CDATA[I&#8217;m fed up with conversations that end something like this.
Yes, that would be the smart thing to do, but it won&#8217;t scale. The stupid approach is better because it scales.
We can&#8217;t use common sense because it doesn&#8217;t fit on a form.
We can&#8217;t treat people like people because that doesn&#8217;t scale well.
We can&#8217;t use a simple [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m fed up with conversations that end something like this.</p>
<blockquote><p>Yes, that would be the smart thing to do, but it won&#8217;t scale. The stupid approach is better because it scales.</p></blockquote>
<p>We can&#8217;t use common sense because it doesn&#8217;t fit on a form.</p>
<p>We can&#8217;t treat people like people because that doesn&#8217;t scale well.</p>
<p>We can&#8217;t use a simple approach to solve the problem in front of us unless the same approach would also work on a problem 100x larger that we may never have.</p>
<p>If the smart thing to do doesn&#8217;t scale, maybe we shouldn&#8217;t scale.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/07/30/organizational-scar-tissue/">Organizational scar tissue</a><br />
<a href="http://www.johndcook.com/blog/2010/04/05/rewarding-complexity/">Rewarding complexity</a><br />
<a href="http://www.johndcook.com/blog/2008/07/08/whats-wrong-with-paper/">What&#8217;s wrong with paper?</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/By6BfHDEzAk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/19/stupidity-scales/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/19/stupidity-scales/</feedburner:origLink></item>
		<item>
		<title>Covariance and contravariance in math and CS</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/t5bN-XBtjlk/</link>
		<comments>http://www.johndcook.com/blog/2010/07/19/covariance-and-contravariance/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 12:32:55 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Math]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Probability and Statistics]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5892</guid>
		<description><![CDATA[I heard the terms &#8220;covariance&#8221; and &#8220;contravariance&#8221; used in math long before I heard them used in object oriented programming.  I was curious whether there was any connection between the two. To my surprise, they&#8217;re very similar. In fact, you could formalize the OOP use of the terms so that they&#8217;re not just analogous but [...]]]></description>
			<content:encoded><![CDATA[<p>I heard the terms &#8220;covariance&#8221; and &#8220;contravariance&#8221; used in math long before I heard them used in object oriented programming.  I was curious whether there was any connection between the two. To my surprise, they&#8217;re very similar. In fact, you could formalize the OOP use of the terms so that they&#8217;re not just analogous but actually  special cases of the mathematical terms.</p>
<p>When I started writing this post, I intended to explain covariance and contravariance. However, the post became longer and more technical than what I like to write here. Instead, I just announce that a connection exists and give references for those who want to read further.</p>
<p>Chris Burrows describes covariance and contravariance in object oriented programming in his article <a href="http://msdn.microsoft.com/en-us/magazine/ff796223.aspx">New C# Features in the .NET Framework 4</a>.</p>
<p><a href="http://en.wikipedia.org/wiki/Category_theory">Wikipedia</a> has a  short but readable introduction to category theory including covariant  and contravariant functors. See also <a href="http://cseweb.ucsd.edu/~goguen/pps/manif.ps">A Categorical Manifesto</a> (PostScript file). The terms <a href="http://mathworld.wolfram.com/CovariantFunctor.html">covariant</a> and <a href="http://mathworld.wolfram.com/ContravariantFunctor.html">contravariant</a> were defined in category theory before computer scientists applied the terms to object oriented programming.</p>
<p>Computer scientists have been interested in category theory for some time, so it&#8217;s not too surprising that category theory terms would filter down into practical programming. The real surprise was hearing category terminology used outside of math. It was like the feeling you get when you run into a coworker at a family reunion or a neighbor at a restaurant in another city.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/07/08/my-mathematical-opposite/">My mathematical opposite</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/t5bN-XBtjlk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/19/covariance-and-contravariance/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/19/covariance-and-contravariance/</feedburner:origLink></item>
		<item>
		<title>Origin of Mythical Man-Month</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/WgvrsrybSdI/</link>
		<comments>http://www.johndcook.com/blog/2010/07/17/origin-of-mythical-man-month/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 19:44:22 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5913</guid>
		<description><![CDATA[The August 2010 issue of Wired has an interview with Fred Brooks. The interviewer, Kevin Kelly, asks Brooks why he wrote his popular book The Mythical Man-Month. Here&#8217;s Brooks&#8217; response.
As I was leaving IBM, Thomas Watson, Jr. asked me, &#8220;You&#8217;ve run the hardware part of the IBM 360, and you&#8217;re run the software part; what&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>The August 2010 issue of Wired has an interview with Fred Brooks. The interviewer, Kevin Kelly, asks Brooks why he wrote his popular book <a href="http://www.amazon.com/gp/product/0201835959?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0201835959">The Mythical Man-Month</a>. Here&#8217;s Brooks&#8217; response.</p>
<blockquote><p>As I was leaving IBM, Thomas Watson, Jr. asked me, &#8220;You&#8217;ve run the hardware part of the IBM 360, and you&#8217;re run the software part; what&#8217;s the difference between running the two?&#8221; I told him that was too hard a question for an instant answer but that I would think about it. My answer was <em>The Mythical Man-Month</em>.</p></blockquote>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/05/26/fred-brooks-interview/">A few questions with Fred Brooks</a><br />
<a href="http://www.johndcook.com/blog/2010/04/12/best-management-decision/">Best management decision</a><br />
<a href="http://www.johndcook.com/blog/2010/04/08/many-hands-make-more-work/">Many hands make more work</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/WgvrsrybSdI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/17/origin-of-mythical-man-month/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/17/origin-of-mythical-man-month/</feedburner:origLink></item>
		<item>
		<title>Weekend miscellany</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/tudTomAbX74/</link>
		<comments>http://www.johndcook.com/blog/2010/07/16/weekend-miscellany-46/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 00:54:24 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5851</guid>
		<description><![CDATA[How  data travels from phone to computer
Relativity in words of four letters or less
How to fool yourself — and  others — with statistics
Open source biology software from Microsoft Research
Farmers

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/twcableuntangled/4733706156/sizes/o/">How  data travels from phone to computer</a></p>
<p><a href="http://www.muppetlabs.com/~breadbox/txt/al.html">Relativity in words of four letters or less</a></p>
<p><a href="http://wmbriggs.com/blog/?p=2179">How to fool yourself — and  others — with statistics</a></p>
<p><a href="http://blogs.msdn.com/b/msr_er/archive/2010/07/09/microsoft-biology-foundation-available-for-free-download.aspx">Open source biology software from Microsoft Research</a></p>
<p><a href="http://www.mikeroweworks.com/2010/07/podcast-3-ffa/">Farmers</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="278" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/kkGeOWYOFoA&amp;hl=en_US&amp;fs=1?rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="450" height="278" src="http://www.youtube.com/v/kkGeOWYOFoA&amp;hl=en_US&amp;fs=1?rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/tudTomAbX74" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/16/weekend-miscellany-46/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/16/weekend-miscellany-46/</feedburner:origLink></item>
		<item>
		<title>Peripeteia</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/pfKmRTp8YZU/</link>
		<comments>http://www.johndcook.com/blog/2010/07/16/peripeteia/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 11:22:54 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5768</guid>
		<description><![CDATA[I was looking at a word-of-the-day calendar the other day and the word was peripeteia. I didn&#8217;t remember what the word meant, but I remembered that I heard someone use it in a presentation.
Eventually I remembered that Mike Rowe had used peripeteia in his TED talk. The word means a sudden or unexpected reversal of [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking at a word-of-the-day calendar the other day and the word was <em>peripeteia</em>. I didn&#8217;t remember what the word meant, but I remembered that I heard someone use it in a presentation.</p>
<p>Eventually I remembered that Mike Rowe had used <em>peripeteia</em> in his <a href="http://www.ted.com/talks/mike_rowe_celebrates_dirty_jobs.html">TED talk</a>. The word means a sudden or unexpected reversal of circumstances. Rowe begins his talk by describing a peripeteia moment he had while castrating sheep. He uses this story to illustrate how our ideas about work can be very wrong.</p>
<p><object width="446" height="326"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/MikeRowe_2008P-medium.flv&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/MikeRowe-2008P.embed_thumbnail.jpg&#038;vw=432&#038;vh=240&#038;ap=0&#038;ti=477&#038;introDuration=15330&#038;adDuration=4000&#038;postAdDuration=830&#038;adKeys=talk=mike_rowe_celebrates_dirty_jobs;year=2008;theme=media_that_matters;theme=not_business_as_usual;theme=master_storytellers;event=EG+2008;&#038;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/MikeRowe_2008P-medium.flv&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/MikeRowe-2008P.embed_thumbnail.jpg&#038;vw=432&#038;vh=240&#038;ap=0&#038;ti=477&#038;introDuration=15330&#038;adDuration=4000&#038;postAdDuration=830&#038;adKeys=talk=mike_rowe_celebrates_dirty_jobs;year=2008;theme=media_that_matters;theme=not_business_as_usual;theme=master_storytellers;event=EG+2008;"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/pfKmRTp8YZU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/16/peripeteia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/16/peripeteia/</feedburner:origLink></item>
		<item>
		<title>Three surprises with bc</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/3uEIHR9fol8/</link>
		<comments>http://www.johndcook.com/blog/2010/07/14/bc-math-library/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 14:57:35 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5842</guid>
		<description><![CDATA[bc is a quirky but useful calculator. It is a standard Unix utility and is also available for Windows.
One nice feature of bc is that you can set the parameter scale to indicate the desired precision. For example, if you set scale=100, all calculations will be carried out to 100 decimal places.
The first surprise is [...]]]></description>
			<content:encoded><![CDATA[<p><code>bc</code> is a quirky but useful calculator. It is a standard Unix utility and is also available for <a href="http://gnuwin32.sourceforge.net/packages/bc.htm">Windows</a>.</p>
<p>One nice feature of <code>bc</code> is that you can set the parameter <code>scale</code> to indicate the desired precision. For example, if you set <code>scale=100</code>, all calculations will be carried out to 100 decimal places.</p>
<p><strong>The first surprise</strong> is that the default value of <code>scale</code> is 0. So unless you change the default option, 1/2 will return 0. This is not because it is doing integer division: 1.0/2.0 also returns 0. <code>bc</code> is computing 1/2 as 0.5 and displaying the default number of decimal places, i.e. none! Note also that <code>bc</code> doesn&#8217;t round results; it truncates.</p>
<p><code>bc</code> has one option: <code>-l</code>. This option loads the math library and sets the default value of <code>scale</code> to 20. I always fire up <code>bc -l</code> rather than just <code>bc</code>.</p>
<p><strong>The second surprise</strong> with <code>bc</code> is that its math library only has five elementary functions. However, you can do a lot with these five functions if you know a few identities.</p>
<p>The <strong>sine</strong> and <strong>cosine</strong> of <code>x</code> are computed by <code>s(x)</code> and <code>c(x)</code> respectively. Angles are measured in radians. There is no tangent function in <code>bc</code>. If you want the tangent of <code>x</code>, compute <code>s(x)/c(x)</code>. (See <a href="http://www.johndcook.com/blog/2009/09/25/how-many-trig-functions/">here</a> for an explanation of how to compute other trigonometric functions.) As minimal as <code>bc</code> is, it did make a minor concession to convenience: it could have been more minimal by insisting you use sin(π/2 &#8211; <em>x</em>) to compute a cosine.</p>
<p>The only inverse trigonometric function is <code>a(x)</code> for <strong>arctangent</strong>. This function can be bootsrapped to compute other inverse functions via these identities:</p>
<p style="padding-left: 30px;">arcsin(x) = arctan(x / sqrt(1 &#8211; x<sup>2</sup>))<br />
arccos(x) = arctan(sqrt(1 &#8211; x<sup>2</sup> )/ x)<br />
arccot(x) = π/2 &#8211; arctan(x)<br />
arcsec(x) = arctan(sqrt(x<sup>2</sup> &#8211; 1))<br />
arccsc(x) = arctan(1/sqrt(x<sup>2</sup> &#8211; 1))</p>
<p>The functions <code>l(x)</code> and <code>e(x)</code> compute (natural) <strong>logarithm</strong> and <strong>exponential</strong> respectively. <code>bc</code> has a power operator <code>^</code> but it can only be used for integer powers. So you could compute the fourth power of <em>x</em> with <code>x^4</code> but you cannot compute the fourth root of <em>x</em> with <code>x^0.25</code>. To compute <em>x<sup>y</sup></em> for a floating point value <em>y</em>, use <code>e(l(x)*y)</code>. Also, you can use the identity log<em><sub>b</sub></em>(<em>x</em>) = log(<em>x</em>) / log(<em>b</em>) to find logarithms to other bases. For example, you could compute the log base 2 of <em>x</em> using <code>l(x)/l(2)</code>.</p>
<p>Not only is <code>bc</code> surprising for the functions it <em>does not</em> contain, such as no tangent function, it is also surprising for what it <em>does</em> contain. <strong>The third surprise</strong> is that in addition to its five elementary functions, the <code>bc</code> math library has a function <code>j(n,x)</code> t0 compute the <em>n</em>th Bessel function of <em>x</em> where <em>n</em> is an integer. (You can pass in a floating point value of <em>n</em> but <code>bc</code> will lop off the fractional part.)</p>
<p>I don&#8217;t know the history of <code>bc</code>, but it seems someone must have needed Bessel functions and convinced the author to add them. Without <code>j</code>, the library consists entirely of elementary functions of one argument and the names of the functions spell out &#8220;scale.&#8221; The function <code>j</code> breaks this pattern.</p>
<p>If I could include one advanced function in a calculator, it would be the gamma function, not Bessel functions. (Actually, the <em>logarithm</em> of the gamma function is more useful than the gamma function itself, as I explain <a href="http://www.johndcook.com/blog/2010/06/07/math-library-functions-that-seem-unnecessary/">here</a>.) Bessel functions are important in applications but I would expect more demand for the gamma function.</p>
<p><strong>Update</strong>: Right after I posted this, I got an email saying <code>bc -l</code> was following me on Twitter. Since when do Unix commands have Twitter accounts? Well,  <a href="http://twitter.com/hmason">Hilary Mason</a> has created a Twitter account <a href="http://twitter.com/bc_l">bc_l</a> that will run <code>bc -l</code> on anything you send it via DM.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/09/25/how-many-trig-functions/">How many trig functions are there?</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/3uEIHR9fol8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/14/bc-math-library/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/14/bc-math-library/</feedburner:origLink></item>
		<item>
		<title>Trading education systems with China</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/zp6UvjQ51Y8/</link>
		<comments>http://www.johndcook.com/blog/2010/07/14/trading-education-systems-with-china/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 12:46:16 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5876</guid>
		<description><![CDATA[American creativity is declining according to a recent Newsweek article. The article says that America is embracing rote learning just as China is embracing creativity.
In China there has been widespread education reform to extinguish the  drill-and-kill teaching style. &#8230; When  faculty of a major Chinese university asked [Jonathan] Plucker to identify trends  [...]]]></description>
			<content:encoded><![CDATA[<p>American creativity is declining according to a recent <a href="http://www.newsweek.com/2010/07/10/the-creativity-crisis.html">Newsweek article</a>. The article says that America is embracing rote learning just as China is embracing creativity.</p>
<blockquote><p>In China there has been widespread education reform to extinguish the  drill-and-kill teaching style. &#8230; When  faculty of a major Chinese university asked [Jonathan] Plucker to identify trends  in American education, he described our focus on standardized  curriculum, rote memorization, and nationalized testing. “After my  answer was translated, they just started laughing out loud,” Plucker  says. “They said, ‘You’re racing toward our old model. But we’re racing  toward your model, as fast as we can.’ ”</p></blockquote>
<p>Ken Robinson argues in his <a href="http://www.ted.com/talks/view/id/66">TED Talk</a> that rather than encourage creativity, schools kill it.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="334" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/embed/SirKenRobinson_2006-embed_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SirKenRobinson-2006.embed_thumbnail.jpg&amp;vw=320&amp;vh=240&amp;ap=0&amp;ti=66" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="334" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/embed/SirKenRobinson_2006-embed_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SirKenRobinson-2006.embed_thumbnail.jpg&amp;vw=320&amp;vh=240&amp;ap=0&amp;ti=66" bgcolor="#ffffff" wmode="transparent" allowfullscreen="true"></embed></object></p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/06/01/preparing-students-for-innovation/">Preparing for innovation</a><br />
<a href="http://www.johndcook.com/blog/2009/03/03/evaluate-people-at-their-best/">Evaluate people at their best or at their worst?</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/zp6UvjQ51Y8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/14/trading-education-systems-with-china/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/14/trading-education-systems-with-china/</feedburner:origLink></item>
		<item>
		<title>How many errors are left to find?</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/4d1EFu-bNAs/</link>
		<comments>http://www.johndcook.com/blog/2010/07/13/lincoln-index/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 11:59:19 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Probability and Statistics]]></category>
		<category><![CDATA[Quality]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5857</guid>
		<description><![CDATA[There&#8217;s a simple statistic called the Lincoln Index that lets you estimate the total number of errors based on the number of errors found. I&#8217;ll explain what the Lincoln Index is, why it works, give some code for playing with it, and discuss how it applies to software testing.
What is the Lincoln Index?
Suppose you have [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a simple statistic called the Lincoln Index that lets you estimate the total number of errors based on the number of errors found. I&#8217;ll explain what the Lincoln Index is, why it works, give some code for playing with it, and discuss how it applies to software testing.</p>
<p><strong>What is the Lincoln Index?</strong></p>
<p>Suppose you have a tester who finds 20 bugs in your program. You want to estimate how many bugs are really in the program. You know there are at least 20 bugs, and if you have supreme confidence in your tester, you may suppose there are around 20 bugs. But maybe your tester isn&#8217;t very good. Maybe there are hundreds of bugs. How can you have any idea how many bugs there are? There&#8217;s no way to know with one tester. But if you have two testers, you can get a good idea, even if you don&#8217;t know how skilled the testers are.</p>
<p>Suppose two testers independently search for bugs. Let E<sub>1</sub> be the number of errors the first tester finds and E<sub>2</sub> the number of errors the second tester finds. Let S be the number of errors both testers find. The Lincoln Index estimates the total number of errors as E<sub>1</sub> E<sub>2</sub>/S. You can find historical background on the Lincoln Index <a href="http://bit-player.org/2010/the-thrill-of-the-chase">here</a>.</p>
<p><strong>How does the index work? </strong></p>
<p>Suppose there are n bugs and the two testers find bugs with probability p<sub>1</sub> and p<sub>2</sub> respectively. You&#8217;d expect the two testers to find around np<sub>1</sub> and np<sub>2</sub> bugs. If you assume the probabilities of each tester finding a bug are independent, you&#8217;d expect the testers to find around np<sub>1</sub> p<sub>2</sub> bugs in common. That says E<sub>1</sub>*E2/S would be around</p>
<p style="padding-left: 30px;">(n<sup>2</sup> p<sub>1</sub> p<sub>2</sub>) / (n p<sub>1</sub> p<sub>2</sub>) = n.</p>
<p>The probabilities of each tester finding a bug cancel out leaving only n, the total number of bugs.</p>
<p><strong>Simulation code</strong></p>
<p>Here&#8217;s some Python code for simulating estimates using the Lincoln Index.</p>
<pre class="brush: python;">

from random import random

def find_error(p):
    &quot;Find an error with probability p&quot;
    if random() &lt; p:
        return 1
    return 0

def simulate(true_error_count, p1, p2, reps=10000):
    &quot;&quot;&quot;Simulate Lincoln's method for estimating errors
    given the true number of errors, each person's probability
    of finding an error, and the number of simulations to run.&quot;&quot;&quot;
    estimation_error_sum = 0
    for rep in xrange(reps):
        caught1 = 0
        caught2 = 0
        caught_both = 0
        for error in xrange(true_error_count):
            found1 = find_error(p1)
            found2 = find_error(p2)
            caught1 += found1
            caught2 += found2
            caught_both += found1*found2
        estimate = caught1*caught2 / float(caught_both)
        estimation_error_sum += abs(estimate - true_error_count)
    return estimation_error_sum / float(reps)
</pre>
<p>I used this to simulate the case of two testers, one with a 30% chance of finding a bug and the other with a 40% chance, and a total of 100 bugs. I simulated the Lincoln Index 1,000 times, keeping track of the absolute error in the estimates. The code to do this was <code>simulate(100, 0.30, 0.40, 1000)</code>. On average, the Lincoln index over- or under-estimated the number of bugs by about 16. This is a good estimate considering each tester greatly under-estimated the number of bugs.</p>
<p>If you didn&#8217;t think about using something like the Lincoln Index, in the previous example one tester would find around 30 bugs and the other around 40. The two lists might have 10 bugs in common, so you&#8217;d estimate the total number at 60, far short of 100. But the Lincoln index would often find estimates between 84 and 116.</p>
<p>Note that it is possible that the testers won&#8217;t find any of the same bugs. In that case the Lincoln Index cannot be computed and the code will divide by zero. But this is unlikely unless the p&#8217;s are small and n is small.</p>
<p><strong>Software testing</strong></p>
<p>Does the Lincoln Index actually provide a good bug count estimate? That depends on how well the assumptions are met. The index assumes all bugs are equally hard for a given tester to find. It does not assume that both testers are equally skilled, but it does assume that their chances of finding a bug are independent. In other words, tester A is no more or less likely to find a bug just because tester B found it.</p>
<p>The most questionable assumption is that all bugs are equally hard to find. That&#8217;s usually not true. But it may be true that all bugs <em>of a certain kind</em> are equally hard to find. For example, spelling errors may be easier to find than validation oversights, but the Lincoln Index might be good for estimating separately how many spelling errors or validation errors there are.</p>
<p>The index might provide a rough rule of thumb even if the assumptions it that go into it are violated. For example, suppose one tester found 15 bugs and another found 20. But only 3 of the bugs were the same. A naive estimate would say since there are 32 unique bugs found, there must be around that many in total. But the Lincoln Index would estimate 100 bugs. Maybe the Lincoln estimate is not at all accurate, but it does tell you to be worried that there may be a lot more bugs to find since the overlap between the two bug lists was so small.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/03/30/statistical-rule-of-three/">Estimating the chances of something that hasn&#8217;t happened yet</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/4d1EFu-bNAs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/13/lincoln-index/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/13/lincoln-index/</feedburner:origLink></item>
		<item>
		<title>Fortune cookie</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/uvyStE7azSk/</link>
		<comments>http://www.johndcook.com/blog/2010/07/12/fortune-cookie/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 18:05:32 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5854</guid>
		<description><![CDATA[This was my daughter&#8217;s fortune cookie from lunch yesterday:
Digital circuits are made from analog parts.
]]></description>
			<content:encoded><![CDATA[<p>This was my daughter&#8217;s fortune cookie from lunch yesterday:</p>
<blockquote><p>Digital circuits are made from analog parts.</p></blockquote>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/uvyStE7azSk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/12/fortune-cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/12/fortune-cookie/</feedburner:origLink></item>
		<item>
		<title>Weekend miscellany</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/1DMy2UfaV-w/</link>
		<comments>http://www.johndcook.com/blog/2010/07/10/weekend-miscellany-45/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 12:48:33 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5837</guid>
		<description><![CDATA[Water towers
Derek Sivers&#8217; big loss
How to lose time and money
SciPy 2010 presentations
Turning a sphere inside-out part I:

Part II 
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.uh.edu/engines/epi2578.htm">Water towers</a></p>
<p><a href="http://sivers.org/loss">Derek Sivers&#8217; big loss</a></p>
<p><a href="http://www.paulgraham.com/selfindulgence.html">How to lose time and money</a></p>
<p><a href="http://conference.scipy.org/scipy2010/schedule.html">SciPy 2010 presentations</a></p>
<p>Turning a sphere inside-out part I:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/BVVfs4zKrgk&amp;hl=en_US&amp;fs=1?rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/BVVfs4zKrgk&amp;hl=en_US&amp;fs=1?rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://www.youtube.com/watch?v=x7d13SgqUXg&amp;feature=youtu.be">Part II </a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/1DMy2UfaV-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/10/weekend-miscellany-45/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/10/weekend-miscellany-45/</feedburner:origLink></item>
		<item>
		<title>Replacing Mathematica with Python</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/9GXwJf83mWw/</link>
		<comments>http://www.johndcook.com/blog/2010/07/09/replacing-mathematica-with-python/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 14:07:13 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Mathematica]]></category>
		<category><![CDATA[SciPy]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5827</guid>
		<description><![CDATA[Everything I do regularly in Mathematica can be done in Python. Even though Mathematica has a mind-boggling amount of functionality, I only use a tiny proportion of it. I skimmed through some of my Mathematica files to see what functions I use and then looked for Python counterparts. I found I use less of Mathematica [...]]]></description>
			<content:encoded><![CDATA[<p>Everything I do regularly in Mathematica can be done in Python. Even though Mathematica has a mind-boggling amount of functionality, I only use a tiny proportion of it. I skimmed through some of my Mathematica files to see what functions I use and then looked for Python counterparts. I found I use less of Mathematica than I imagined.</p>
<p>The core mathematical functions I need are in <a href="http://www.scipy.org/">SciPy</a>. The plotting features are in <a href="http://matplotlib.sourceforge.net/">matplotlib</a>. The <a href="http://code.google.com/p/sympy/">SymPy</a> library appears to have the symbolic functionality I need, though I&#8217;m as not sure about this one.</p>
<p>I don&#8217;t have much experience with the Python libraries listed above. I haven&#8217;t used SymPy at all; I&#8217;ve only browsed its web site. Maybe I&#8217;ll find I&#8217;d rather work in Mathematica, particularly when I&#8217;m just trying out ideas. But I want to experiment with using Python for more tasks.</p>
<p>As I&#8217;ve blogged about before, I&#8217;d like to consolidate my tools. I started using <a href="http://www.johndcook.com/blog/2010/04/01/giving-emacs-another-try/">Emacs</a> again because I was frustrated with using a different editor for every kind of file. One of the things I find promising about Python is that I may be able to do more in Python and reduce the number of programming languages I use regularly.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2008/07/01/languages-that-are-easy-to-pick-back-up/">Languages that are easy to pick back up</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></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/9GXwJf83mWw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/09/replacing-mathematica-with-python/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/09/replacing-mathematica-with-python/</feedburner:origLink></item>
		<item>
		<title>Total cost of software ownership</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/yecit2oDLWE/</link>
		<comments>http://www.johndcook.com/blog/2010/07/08/software-total-cost-of-ownership/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 11:55:46 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Computing]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5818</guid>
		<description><![CDATA[A decade ago, commercial software vendors would claim that their products were cheaper than open source alternatives when you considered the total cost of ownership. Free software was free to obtain, but difficult to install, configure, maintain, and support.
A lot has changed in the last decade. Open source software has improved a great deal. It [...]]]></description>
			<content:encoded><![CDATA[<p>A decade ago, commercial software vendors would claim that their products were cheaper than open source alternatives when you considered the total cost of ownership. Free software was free to obtain, but difficult to install, configure, maintain, and support.</p>
<p><strong>A lot has changed in the last decade</strong>. Open source software has improved a great deal. It would be interesting to revisit the debate over total cost of ownership. Software vendors are right to point out the indirect costs of free software. But there are indirect costs to commercial software too: <a href="http://www.johndcook.com/blog/2009/11/15/transaction-costs/">transaction costs</a> of purchasing the software, upgrades, maintenance agreements, license management, etc.</p>
<p>Suppose you want to buy <a href="http://www.winzip.com/index.htm">WinZip</a>. It&#8217;s a mature and inexpensive piece of software, selling for $29.95. What will it cost you and your company to buy it? Obviously at least $29.95. But how much paperwork will you have to fill out? How long will it take someone to process your order? How long will you have to wait? If you have a desktop and laptop computer, will you be licensed for both? Can you install it at home? At minimum you&#8217;ll have to read enough fine print to find out. Now suppose you get a new PC. Did you remember to save your WinZip installer before they took away your old PC? Do you have your license key? The more you think about it, the better the free alternative <a href="http://www.7-zip.org/">7-zip</a> looks.</p>
<p><strong>Related posts</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/10/25/shallow-bugs-reported-bugs/">Shallow bugs versus reported bugs</a><br />
<a href="http://www.johndcook.com/blog/2009/05/04/rules-for-computing-happiness/">Rules for computing happiness</a><br />
<a href="http://www.johndcook.com/blog/2010/02/18/noncommercial-is-fuzzy/">&#8220;Noncommercial&#8221; is fuzzy</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/yecit2oDLWE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/08/software-total-cost-of-ownership/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/08/software-total-cost-of-ownership/</feedburner:origLink></item>
		<item>
		<title>Geek fatigue</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/QS5luCQbQtw/</link>
		<comments>http://www.johndcook.com/blog/2010/07/07/geek-fatigue/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 14:01:07 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5726</guid>
		<description><![CDATA[I heard a great term the other day: geek fatigue. Being a geek often means doing things the hard way, at least in the short  term.  There&#8217;s usually some long-term advantage, real or imagined, to justify doing things the hard way. But even a die-hard geek gets tired and wants to take the [...]]]></description>
			<content:encoded><![CDATA[<p>I heard a great term the other day: <strong>geek fatigue</strong>. Being a geek often means doing things the hard way, at least in the short  term.  There&#8217;s usually some long-term advantage, real or imagined, to justify doing things the hard way. But even a die-hard geek gets tired and wants to take the easy way out.</p>
<p>Thomas Gideon — a self-described &#8220;die-hard technology geek&#8221; — used the term <em>geek fatigue</em> on his <a href=" http://thecommandline.net/2010/06/23/linux_switch/">podcast</a> to describe why he bought a Mac a few years ago. He was tired of using Linux and fighting driver issues. (Thomas has recently decided to move back to Linux.)</p>
<p>If geek fatigue is exhaustion from doing things the hard way, there needs to be a corresponding term for the relief that comes from joining the mainstream. Any suggestions?</p>
<p>Sometimes the geek approach is just extra work. There&#8217;s no advantage other than the personal satisfaction of doing something within self-imposed limitations. But sometimes the geek approach pays off, especially in the longer term. What has your experience been?</p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/QS5luCQbQtw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/07/geek-fatigue/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/07/geek-fatigue/</feedburner:origLink></item>
		<item>
		<title>Four out of five dentists surveyed</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/KnK3IKlTPrE/</link>
		<comments>http://www.johndcook.com/blog/2010/07/06/four-out-of-five-dentists-surveyed/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 13:25:30 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5808</guid>
		<description><![CDATA[Years ago, Dentyne chewing gum ran an advertising campaign with the line &#8220;four out of five dentists surveyed recommend sugarless gum for their  patients who chew gum.&#8221; Of course there&#8217;s no mention of sample size. Maybe &#8220;four out of five&#8221; meant 80% of a large survey, or maybe they literally surveyed five dentists.
Even if [...]]]></description>
			<content:encoded><![CDATA[<p>Years ago, Dentyne chewing gum ran an advertising campaign with the line &#8220;four out of five dentists surveyed recommend sugarless gum for their  patients who chew gum.&#8221; Of course there&#8217;s no mention of sample size. Maybe &#8220;four out of five&#8221; meant 80% of a large survey, or maybe they literally surveyed five dentists.</p>
<p>Even if they only talked to five dentists, you&#8217;d think that if four dentists out of five came to the same conclusion, it is quite likely that they have good advice. Individuals have their biases, but if a large majority comes to the same conclusion independently, maybe some underlying truth is responsible for the consensus rather than a coincidence of prejudices.</p>
<p>However, there is a fallacy in the preceding argument. It implicitly assumes that professionals make up their minds independently and that their prejudices are independent. That may be true on some small objective problem. Several scientists may conduct independent experiments and have independent errors. In that case, if most agree on a measurement, that measurement is likely to be accurate. But ask a group of scientists working in the same area if their area deserves more funding. Of course they&#8217;ll agree. Their financial interests are highly correlated.</p>
<p>James Surowiecki&#8217;s book <a href="http://www.amazon.com/gp/product/0385721706?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385721706">The Wisdom of Crowds</a> argues that crowds can be amazingly intelligent. Crowds can also be incredibly foolish. One of the necessary conditions for crowd wisdom is independence. The book gives examples of experiments in which the average independent estimates, such as the weight of a cow or the number of jelly beans in a jar, surprisingly accurate. But if there were an open debate rather than an anonymous poll, the estimates would no longer be independent.  If one influential persons offers a guess, other estimates will be <a href="http://en.wikipedia.org/wiki/Anchoring">anchored</a> by that guess and tend to confirm it.</p>
<p>William Briggs has an excellent article this morning on scientific <a href="http://wmbriggs.com/blog/?p=2593">consensus</a>. The context of his article is climate change, though I don&#8217;t want to open a debate here on climate change. For that matter, I don&#8217;t want to open a debate on the merits of sugarless chewing gum. I&#8217;m more interested in what the article says about how a consensus becomes self-reinforcing.</p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/KnK3IKlTPrE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/06/four-out-of-five-dentists-surveyed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/06/four-out-of-five-dentists-surveyed/</feedburner:origLink></item>
		<item>
		<title>Endless preparation</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/_AIeWobVPe0/</link>
		<comments>http://www.johndcook.com/blog/2010/07/05/endless-preparation/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 15:42:33 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5794</guid>
		<description><![CDATA[In his book Made by Hand, Mark Frauenfelder quotes Peter Gray on what&#8217;s wrong with contemporary education. Gray says that school is about
always preparing for some future time when you will know enough to actually do something, instead of doing things now. And that&#8217;s such a tedious approach for anybody to take to life — [...]]]></description>
			<content:encoded><![CDATA[<p>In his book <a href="http://www.amazon.com/gp/product/1591843324?ie=UTF8&amp;tag=theende-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1591843324">Made by Hand</a>, Mark Frauenfelder quotes Peter Gray on what&#8217;s wrong with contemporary education. Gray says that school is about</p>
<blockquote><p>always preparing for some future time when you will know enough to actually do something, instead of doing things now. And that&#8217;s such a tedious approach for anybody to take to life — always preparing.</p></blockquote>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2010/03/03/just-in-case-versus-just-in-time/">&#8220;Just in case&#8221; versus &#8220;just in time&#8221;</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/_AIeWobVPe0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/05/endless-preparation/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/05/endless-preparation/</feedburner:origLink></item>
		<item>
		<title>Weekend miscellany</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/JX_bjuIYy0U/</link>
		<comments>http://www.johndcook.com/blog/2010/07/03/weekend-miscellany-44/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 06:14:57 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5772</guid>
		<description><![CDATA[How Google works
Somewhere  between Paris Hilton and Socrates
Research-driven startups
Carnival of Mathematics #67

]]></description>
			<content:encoded><![CDATA[<p><a href="http://ppcblog.com/how-google-works/">How Google works</a></p>
<p><a href="http://twentytwowords.com/2010/06/30/safely-accurate-self-assessment-im-somewhere-between-paris-hilton-and-socrates/">Somewhere  between Paris Hilton and Socrates</a></p>
<p><a href="http://measuringmeasures.com/blog/2010/7/2/research-driven-startups.html">Research-driven startups</a></p>
<p><a href="http://travelsinamathematicalworld.blogspot.com/2010/07/carnival-of-mathematics-67.html">Carnival of Mathematics #67</a></p>
<p><object width="450" height="278"><param name="movie" value="http://www.youtube.com/v/_zmwRitYO3w&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_zmwRitYO3w&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="278"></embed></object></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/JX_bjuIYy0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/03/weekend-miscellany-44/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/03/weekend-miscellany-44/</feedburner:origLink></item>
		<item>
		<title>Volumes of Lp unit balls</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/LxvHCA-7nsI/</link>
		<comments>http://www.johndcook.com/blog/2010/07/02/volumes-of-generalized-unit-balls/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 19:53:05 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5783</guid>
		<description><![CDATA[The unit ball in n dimensions under the Lp norm has volume

I ran across this formula via A nice formula for the volume of an L_p ball. That post gives an even more general result that allows different values of p along each axis.
There have been several blog posts lately on the volume of balls [...]]]></description>
			<content:encoded><![CDATA[<p>The unit ball in <em>n</em> dimensions under the L<sup><em>p</em></sup> norm has volume</p>
<p style="text-align:center"><sup><img src="http://www.johndcook.com/Lp_volume.png" alt="2^n \frac{\Gamma\left(1 + \frac{1}{p}\right)^n}{\Gamma\left( 1 + \frac{n}{p} \right)}" width="99" height="66" /></sup></p>
<p>I ran across this formula via <a href="http://ergodicity.net/2010/07/02/a-nice-formula-for-the-volume-of-an-l_p-ball/">A nice formula for the volume of an L_p ball</a>. That post gives an even more general result that allows different values of <em>p</em> along each axis.</p>
<p>There have been <a href="http://ontopo.wordpress.com/2009/03/03/reasoning-in-higher-dimensions-hyperspheres/">several</a> <a href="http://mark.reid.name/iem/warning-high-dimensions.html">blog</a> <a href="http://divisbyzero.com/2010/05/09/volumes-of-n-dimensional-balls/">posts</a> lately on the volume of balls in higher dimensions that correspond to the case <em>p</em> = 2. The formula above is valid for all <em>p</em> &gt; 0.</p>
<p>Note that as <em>p</em> goes to ∞ the volume goes to 2<sup>n</sup> because the terms involving gamma functions go to 1. This is as we&#8217;d expect since the unit &#8220;ball&#8221; in the infinity norm is a cube, two units wide on each side.</p>
<p><strong>Related post</strong>:</p>
<p><a href="http://www.johndcook.com/blog/2009/03/23/inequalities-means/">Means and inequalities</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/LxvHCA-7nsI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/02/volumes-of-generalized-unit-balls/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/02/volumes-of-generalized-unit-balls/</feedburner:origLink></item>
		<item>
		<title>SciPy and NumPy for .NET</title>
		<link>http://feedproxy.google.com/~r/TheEndeavour/~3/uyMiItahk7Q/</link>
		<comments>http://www.johndcook.com/blog/2010/07/01/scipy-and-numpy-for-net/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 16:00:44 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[IronPython]]></category>
		<category><![CDATA[SciPy]]></category>

		<guid isPermaLink="false">http://www.johndcook.com/blog/?p=5759</guid>
		<description><![CDATA[Travis Oliphant announced this morning at the SciPy 2010 conference that Microsoft is partnering with Enthought to produce a version of NumPy and SciPy for .NET. NumPy and SciPy are Python libraries for scientific computing. Oliphant is the president of Enthought and the original developer of NumPy.
It is possible to call NumPy and SciPy from [...]]]></description>
			<content:encoded><![CDATA[<p>Travis Oliphant announced this morning at the <a href="http://conference.scipy.org/scipy2010/index.html">SciPy 2010 conference</a> that Microsoft is partnering with <a href="http://www.enthought.com/">Enthought</a> to produce a version of NumPy and SciPy for .NET. NumPy and SciPy are Python libraries for scientific computing. Oliphant is the president of Enthought and the original developer of NumPy.</p>
<p>It is possible to call NumPy and SciPy from IronPython now by using <a href="http://www.johndcook.com/blog/2009/03/19/ironclad-ironpytho/">IronClad</a>. However, going through IronClad can be inefficient.  The new libraries will enable efficient access to NumPy and SciPy from .NET languages and in particular from IronPython.</p>
<p>Here is the official <a href="http://www.enthought.com/media/SciPyNumPyDotNet.pdf">press release</a> from Enthought.</p>
<p><img class="alignnone" src="http://www.johndcook.com/announcement.jpg" alt="" width="234" height="189" /></p>
<p>Photo credit: <a href="http://www.flickr.com/photos/pivanov/4752318542/">Paul Ivanov</a></p>
<img src="http://feeds.feedburner.com/~r/TheEndeavour/~4/uyMiItahk7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.johndcook.com/blog/2010/07/01/scipy-and-numpy-for-net/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.johndcook.com/blog/2010/07/01/scipy-and-numpy-for-net/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 1.046 seconds -->
