<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>phauna.org &#187; reviews</title>
	<atom:link href="http://www.phauna.org/category/reviews/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phauna.org</link>
	<description></description>
	<lastBuildDate>Sat, 26 Jun 2010 17:17:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dr. Bronner&#8217;s: new formula?</title>
		<link>http://www.phauna.org/2008/06/09/dr-bronners-new-formula/</link>
		<comments>http://www.phauna.org/2008/06/09/dr-bronners-new-formula/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 00:00:41 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>
		<category><![CDATA[world]]></category>

		<guid isPermaLink="false">http://www.phauna.org/?p=109</guid>
		<description><![CDATA[The new Dr. Bronner&#8217;s 18-in-1 Hemp PEPPERMINT PURE-CASTILE SOAP I got doesn&#8217;t look like the old stuff.  I have the last little bit of a bottle my mom gave me about 3 years ago, and the color is totally different.  Here are some photos:


Notice how much darker the old sample is than the [...]]]></description>
			<content:encoded><![CDATA[<p>The new Dr. Bronner&#8217;s 18-in-1 Hemp PEPPERMINT PURE-CASTILE SOAP I got doesn&#8217;t look like the old stuff.  I have the last little bit of a bottle my mom gave me about 3 years ago, and the color is totally different.  Here are some photos:</p>
<p><span id="more-109"></span></p>
<p><a href='http://www.phauna.org/wp-content/uploads/2008/06/drbronners_compare.jpg'><img src="http://www.phauna.org/wp-content/uploads/2008/06/drbronners_compare-300x143.jpg" alt="new vs old Dr. Bronner\&#039;s soap" title="new vs old Dr. Bronner\&#039;s soap" width="300" height="143" class="alignnone size-medium wp-image-110" /></a></p>
<p>Notice how much darker the old sample is than the new sample? (I poured it onto a white plate for the photo-op.)  Here are some closeups, first old:</p>
<p><a href='http://www.phauna.org/wp-content/uploads/2008/06/drbronners_old.jpg'><img src="http://www.phauna.org/wp-content/uploads/2008/06/drbronners_old-300x275.jpg" alt="Close-up of old Dr. Bronner\&#039;s soap sample" title="drbronners_old" width="300" height="275" class="alignnone size-medium wp-image-111" /></a></p>
<p>Then new:</p>
<p><a href='http://www.phauna.org/wp-content/uploads/2008/06/drbronners_new.jpg'><img src="http://www.phauna.org/wp-content/uploads/2008/06/drbronners_new-300x246.jpg" alt="Close-up of new Dr. Bronner\&#039;s soap sample" title="drbronners_new" width="300" height="246" class="alignnone size-medium wp-image-112" /></a></p>
<p>The new stuff looks practically like water compared to the old.  Which could be the answer; maybe they&#8217;ve sold out and started watering down their soaps to keep up with the competition from <a href="http://www.naturalnews.com/017113.html">all the fakers</a>.  It also could be that something in the soap gets dark over time.  Another possibility is that they&#8217;ve just altered the formula slightly&#8212;which is certainly true, because the ingredients are different, though not by much.</p>
<p>Old ingredients: Water, Saponified Coconut-Hemp-Olive Oils (with retained Glycerin), Olive Fatty Acids, Peppermint Oil, Rosemary Extract</p>
<p>New ingredients: Water, Saponified Organic Coconut* &#038; Organic Olive* Oils (w/ Retained Glycerin), Organic Hemp Oil, Organic Jojoba Oil, Organic Peppermint Oil, Mentha Arvensis Extract, Citric Acid, Vitamin E</p>
<p>(The asterisks indicate which ingredients are &#8220;Certified Fair Trade&#8221;, which by the way seems a little disingenuous considering the comments by David Bronner in the interview above, and the fact that the new label prominently displays &#8220;CERTIFIED FAIR TRADE&#8221;).</p>
<p>Another dubious piece of evidence: the hole in the lid grew significantly from old to new, as if to say &#8220;use more!&#8221;.</p>
<p>WE&#8217;RE WATCHING YOU, DR BRONNER!  DON&#8217;T DILUTE! DILUTE! OUR SOAP!  OK! OK!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2008/06/09/dr-bronners-new-formula/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Your Future, Your Choice</title>
		<link>http://www.phauna.org/2008/03/22/your-future-your-choice/</link>
		<comments>http://www.phauna.org/2008/03/22/your-future-your-choice/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 19:18:54 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2008/03/22/your-future-your-choice/</guid>
		<description><![CDATA[Some family of mine sent me this book recently: Your Future, Your Choice: Christian Character in a Changing Economy, by Kerry J. Koller.  It&#8217;s short, and covers the basics of how this guy thinks Christians should relate to money and the economy.  Much of it was straight forward&#8212;don&#8217;t have lots of credit card [...]]]></description>
			<content:encoded><![CDATA[<p>Some family of mine sent me this book recently: <a type="amzn" asin="093777927X">Your Future, Your Choice: Christian Character in a Changing Economy, by Kerry J. Koller</a>.  It&#8217;s short, and covers the basics of how this guy thinks Christians should relate to money and the economy.  Much of it was straight forward&#8212;don&#8217;t have lots of credit card debt, for example.  But there were a few interesting ideas that don&#8217;t show up in other personal-finance type books.</p>
<p><span id="more-104"></span></p>
<p>The book makes an interesting point about why we should pay attention to our money, instead of just assuming God will take care of us.  The idea is basically that we should be &#8220;provident and resourceful&#8221; people, so that in the event something happens to the economy or the world (e.g. a natural disaster), we&#8217;re able to function enough to continue doing good things&#8212;helping the needy, who will be more so during times of duress.  We&#8217;re not taking care of ourselves purely for self-preservation or so we can be lazy, we do it to maintain our future potential to act beautifully in the world (okay, that last bit was more like my interpretation of what the book says).  This leads naturally to why we should have savings, and not have lots of credit card debt, and generally live within or even beneath our means so that we have means to help others now and in the future.</p>
<p>One other thing it leads to is not something I had expected.  That is that we should be prepared for future problems <em>outside</em> the economy.  In other words, sure we need to save money, but if the economy itself fails us (e.g. the store has no food), are we prepared?  So this whole section of the book is dedicated to talking about planning for things like a flood or hurricane that wipes out communication or transportation for a time.  It talks about a &#8220;Self-Sufficiency Exercise&#8221;, in which we give up all outside resources&#8212;electricity from the grid, fuel that&#8217;s not stored at your house, food from the store&#8212;for a period of time, such as a week.  This is to test the character of ourselves and our family, and perhaps just as a learning experience to show just how much we depend on the economy from day to day.  </p>
<p>Doing this exercise in the city seems rather hard, because having a generator or propane tanks is not really feasible.  However, some things are probably easier in the city, like the fact that most places are within walking distance, or at least you can take public transportation (if your disaster scenario permits).  Regardless of location, one can certainly have a few weeks worth of food and water stored up.  I haven&#8217;t decided to undertake such an exercise, not the least because the other person living with me probably would object.  But I might start storing a little water, and a little food&#8212;just in case.</p>
<p>I was a little surprised to find as much interesting in the book as I did.  There was one other little thing: I learned about the existence of <a href="http://en.wikipedia.org/wiki/Futurology">futurology</a>&#8212;the study of what&#8217;s going to happen in the future, of course!  It sounds like Asimov, but it looks like it might actually be real.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2008/03/22/your-future-your-choice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pears are yummy</title>
		<link>http://www.phauna.org/2007/09/30/pears-are-yummy/</link>
		<comments>http://www.phauna.org/2007/09/30/pears-are-yummy/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 01:54:13 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2007/09/30/pears-are-yummy/</guid>
		<description><![CDATA[This week, I discovered that pears are yummy.  And there are lots of different kinds, just like with apples.  Who knew?  Try a few!

]]></description>
			<content:encoded><![CDATA[<p>This week, I discovered that pears are yummy.  And there are lots of different kinds, just like with apples.  Who knew?  Try a few!</p>
<p><img src="http://www.usapears.com/fileData/images/allvarietiesnames.jpg" alt="pears" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2007/09/30/pears-are-yummy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>review: The 300</title>
		<link>http://www.phauna.org/2007/03/10/review-the-300/</link>
		<comments>http://www.phauna.org/2007/03/10/review-the-300/#comments</comments>
		<pubDate>Sat, 10 Mar 2007 07:37:02 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2007/03/10/review-the-300/</guid>
		<description><![CDATA[I went to see &#8220;The 300&#8243; tonight at a sold out theater in Manhattan.  The movie is based on the graphic novel by Frank Miller, which I managed to read just an hour or so before the movie.
The primary things I want to say about the film are:

 Stylistically, it is very much like [...]]]></description>
			<content:encoded><![CDATA[<p>I went to see &#8220;The 300&#8243; tonight at a sold out theater in Manhattan.  The movie is based on <a href="http://en.wikipedia.org/wiki/300_(comic_book)">the graphic novel</a> by Frank Miller, which I managed to read just an hour or so before the movie.</p>
<p>The primary things I want to say about the film are:</p>
<ul>
<li> Stylistically, it is very much like the graphic novel.  In fact, a very many scenes are almost exactly what I imagined when I read the novel.  This is a good thing.  Lots of beautifully bloody and bad-ass slow-motion battle shots.</li>
<li> They made up some battle scenes with big ogrey guys for the movie.  No problems here.</li>
<li> Oddly, the massive amounts of violence didn&#8217;t bother me much.  However,<br />
there were a few scenes where they went a bit too far.</li>
<li> There&#8217;s not a whole lot of story in either the book or the movie.  However, there&#8217;s more in the movie than the book.  Primarily, the filmmakers added a side story about Leonidas&#8217; wife (Leonidas being the king, the main character).  They also added a political agenda: discourse along the lines of &#8220;freedom isn&#8217;t free&#8221;, &#8220;support the troops&#8221;, &#8220;finish the job&#8221;, &#8220;congress sucks for opposing the increase of troops in Iraq&#8221;.. well they obviously didn&#8217;t say that last bit but they might as well have.  This particularly bothered me because I felt it subtracted significantly from Frank Miller&#8217;s original portrayal of the reason, freedom, and justice pose struck by the Spartans.</li>
<li> (minor spoiler) One interesting detail conspicuously missing from the movie: in the book, when Ephialtes, the betrayer, finds out by speaking with the king that he is not worthy of being a Spartan warrior, he jumps off a cliff in an effort to kill himself.  He does not quite die, and then drags himself to his feet again to perform his betrayal.  In the film, he does not try to kill himself at all&#8211;he instead immediately turns bitter and gets the idea to betray the Spartans.  I thought the suicide was an important illustration of the depth of the warrior Spartan image.  I&#8217;m not sure why it was left out&#8211;perhaps because they wanted to make Ephialtes more clearly a badguy.</li>
</ul>
<p>In conclusion, I have to say that the made up plot points and political agenda turned me off significantly to what could have been a truly original and fine piece of work.  Read the graphic novel; I felt that part was a valuable experience. Stay away from the film, or at least wait until it&#8217;s netflixed.  It doesn&#8217;t deserve your $10.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2007/03/10/review-the-300/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>xootr customer service for teh win!</title>
		<link>http://www.phauna.org/2007/02/16/xootr-customer-service-for-teh-win/</link>
		<comments>http://www.phauna.org/2007/02/16/xootr-customer-service-for-teh-win/#comments</comments>
		<pubDate>Sat, 17 Feb 2007 01:29:10 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>
		<category><![CDATA[world]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2007/02/16/xootr-customer-service-for-teh-win/</guid>
		<description><![CDATA[I have a xootr mg.  It&#8217;s a love-hate relationship; it&#8217;s a great ride, but it breaks in one way or another fairly frequently.
On the latest break, two screws wiggled loose and got lost.   The scooter still rides but the handlebar clamp is loose and probably won&#8217;t stay on forever in this state. [...]]]></description>
			<content:encoded><![CDATA[<p>I have a <a href="http://www.xootr.com/xootr/nscooters.shtml">xootr</a> <a href="http://www.xootr.com/xootr/images/scooters/mg-composite-1200.jpg">mg</a>.  It&#8217;s a love-hate relationship; it&#8217;s a great ride, but it breaks in one way or another fairly frequently.</p>
<p>On the latest break, two screws wiggled loose and got lost.   The scooter still rides but the handlebar clamp is loose and probably won&#8217;t stay on forever in this state.  I sent xootr service the following email:</p>
<p><code></code></p>
<p>What sort of response would you expect from <em>your</em> favorite merchant?  I was thinking of one of two things: either &#8220;please buy an entire new handlebar clamp kit&#8221; ($20 plus shipping, IIRC), or &#8220;okay, that&#8217;ll be x dollars&#8221;.  The actual response follows:</p>
<p><pre><code>
Subject: RE: need little screws for handlebar clamp

Hi XXXX.

Let me have your address and I will send some immediately.

Best,

Steve
</code></pre></p>
<p>Radical.  I like small companies, and I like companies that respect their customers.  Yay Xootr.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2007/02/16/xootr-customer-service-for-teh-win/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>review: Micro Copter Remote Control Helicopter</title>
		<link>http://www.phauna.org/2007/01/20/review-micro-copter-remote-control-helicopter/</link>
		<comments>http://www.phauna.org/2007/01/20/review-micro-copter-remote-control-helicopter/#comments</comments>
		<pubDate>Sat, 20 Jan 2007 23:06:05 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2007/01/20/review-micro-copter-remote-control-helicopter/</guid>
		<description><![CDATA[For Christmas, somebody had the brilliant idea to give me this little beauty.  It&#8217;s a very small, lightweight remote control helicopter.  And it&#8217;s fantabulous.

Micro X Copter


It&#8217;s about 8 inches long, and made mostly of styrofoam.  The rotors are made of flexible black plastic, which makes them especially durable when you run into [...]]]></description>
			<content:encoded><![CDATA[<p>For Christmas, somebody had the brilliant idea to give me this little beauty.  It&#8217;s a very small, lightweight remote control helicopter.  And it&#8217;s fantabulous.</p>
<p><img src="/wp-content/images/copter_small_side.jpg"/></p>
<p><a href="http://www.amazon.com/gp/product/B000J1GUFE?ie=UTF8&#038;tag=phaunaorg-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000J1GUFE">Micro X Copter</a><img src="http://www.assoc-amazon.com/e/ir?t=phaunaorg-20&#038;l=as2&#038;o=1&#038;a=B000J1GUFE" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
<p><span id="more-57"></span></p>
<p><img src="/wp-content/images/copter_large_side.jpg"/></p>
<p>It&#8217;s about 8 inches long, and made mostly of styrofoam.  The rotors are made of flexible black plastic, which makes them especially durable when you run into things (which I do all the time).  The whole thing weighs about as much as two cdrs (sorry, it&#8217;s all I had handy to compare with), which is really impressive when you consider the fact that it&#8217;s got a battery and motor strong enough to keep it up in the air for 15 minutes or so between recharges.</p>
<p><img src="/wp-content/images/copter_controller_front.jpg"/></p>
<p>The controller is pretty straight forward; the left lever controls the throttle, the right lever controls the yaw (it turns the copter left and right), and there&#8217;s a trim adjustment under the yaw lever which is basically an alignment adjustment for the yaw.  It also has three channels (the A B C switch in the middle), in case you get together with some friends who have the same device.</p>
<p><img src="/wp-content/images/copter_recharge.jpg"/></p>
<p>One bit that I found kind of odd was that the helicopter charges directly from the controller.  I would have expected an adapter that plugs into the wall.  But this seems to work fine, as long as you have enough AA batteries.</p>
<p><img src="/wp-content/images/copter_controller_batteries.jpg"/></p>
<p>The controller takes 6 AA batteries.  I would recommend getting 6 <a href="http://www.amazon.com/gp/product/B000LV8YKQ?ie=UTF8&#038;tag=phaunaorg-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000LV8YKQ">usbcell</a><img src="http://www.assoc-amazon.com/e/ir?t=phaunaorg-20&#038;l=as2&#038;o=1&#038;a=B000LV8YKQ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; padding:0px !important" /> batteries so you don&#8217;t waste throwaways.</p>
<p>Flying the copter is a challenge, as I would expect any R/C helicopter to be.  What makes this one seem unique is:</p>
<ul>
<li>It&#8217;s meant to be flown indoors.  I&#8217;ve crashed mine into the ceilings, walls, and random furniture over and over again, and it still works fine.</li>
<li>It&#8217;s cheap ($39.95).</li>
<li>It&#8217;s really simple to get off the ground and sort of fly it, but to really control it takes a lot of patience.</li>
</ul>
<p>All told, it&#8217;s total zuitnis.</p>
<p><img src="/wp-content/images/copter_front.jpg"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2007/01/20/review-micro-copter-remote-control-helicopter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Review of Practical OCaml</title>
		<link>http://www.phauna.org/2006/11/04/review-of-practical-ocaml/</link>
		<comments>http://www.phauna.org/2006/11/04/review-of-practical-ocaml/#comments</comments>
		<pubDate>Sat, 04 Nov 2006 15:07:48 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2006/11/04/review-of-practical-ocaml/</guid>
		<description><![CDATA[At work, we&#8217;re always interested in interesting OCaml developments.  This is why we were very excited when a new book on OCaml came out, in english no less!  (The O&#8217;Reilly OCaml book was originally published in French, but now there&#8217;s an english translation online).  The prospects were great.  How did it [...]]]></description>
			<content:encoded><![CDATA[<p>At work, we&#8217;re always interested in interesting OCaml developments.  This is why we were very excited when a new book on OCaml came out, in english no less!  (The O&#8217;Reilly OCaml book was originally published in French, but now there&#8217;s an english translation <a title="caml.inria.fr" href="http://caml.inria.fr/pub/docs/oreilly-book/">online</a>).  The prospects were great.  How did it actually come out, you ask?</p>
<p><a href="http://www.amazon.com/gp/product/159059620X?ie=UTF8&#038;tag=phaunaorg-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=159059620X"><img border="0" src="/wp-content/images/159059620X.01._AA_SCMZZZZZZZ_V39354040_.jpg"/></a><img src="http://www.assoc-amazon.com/e/ir?t=phaunaorg-20&#038;l=as2&#038;o=1&#038;a=159059620X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
<p>Title:<strong> Practical OCaml</strong></p>
<p>Author: <strong>Joshua B. Smith</strong></p>
<p>Technical Reviewer: <strong>Richard Jones</strong>, of <a title="merjis.com" href="http://merjis.com/">Merjis</a><br />
Publisher: <strong>Apress</strong>, part of the <strong>Practical</strong> series (which published, notably, <strong>Practical Common Lisp</strong>)</p>
<p>Pages: <strong>456</strong></p>
<p>Published: <strong>2006</strong></p>
<p><span id="more-42"></span></p>
<p><strong>Review</strong>:</p>
<p>The concept behind the book is brilliant: shed some light on how OCaml can be used for <em>practical</em> coding.  All the ivory tower academics are constantly touting the merits of type-safety and functional programming, but hardly anyone actually uses functional programming for real, practical work.  There are only a small handful of significant open-source programs written in OCaml, and even now very few companies have embraced the language.</p>
<p>It&#8217;s a great idea to show how OCaml can be used to write real world applications.  It&#8217;s clear from the title, overview, and structure of the book that Joshua Smith wants to emphasize OCaml&#8217;s practicality: his sample code includes &#8220;A URI Library,&#8221; &#8220;A Spam Filter,&#8221; and &#8220;A Shoutcast Server.&#8221;  For this essential insight, I applaud Mr. Smith.</p>
<p>Unfortunately, that&#8217;s about where the praise has to stop.   This book has several serious flaws, that render it virtually useless.  In fact, this book&#8217;s existence will probably cause significant harm to OCaml&#8217;s reputation.</p>
<p>Let&#8217;s start with the writing.  In the &#8220;About the Author&#8221; section, we learned that the author was, in fact, an English major in college.  So we expect some good english&#8211;hopefully better than most dry technical books written by dry technical folks who know lambda calculus but don&#8217;t know what an adverb is.</p>
<p>Let&#8217;s take a few examples:</p>
<blockquote><p><strong>The Blog</strong><br />
In fewer than 100 lines of code, you can see the code that provides much of what you see on the screen.  This is a simple, file-based web log such as CGI.  It creates the disk files named by using an MD5 hash of the data within the file, which makes the likelihood of collision so small as to be a nonissue.  If I were more concerned, I would add the time to the string used to calculate the MD5 hash, but I haven&#8217;t done that.<br />
<em> </em></p></blockquote>
<p>Try reading the first sentence out loud.  Doesn&#8217;t make any sense, does it?  The second one is no better, if you know what CGI is (it&#8217;s definitely not a type of &#8220;file-based web log&#8221;).  The remaining discussion about the MD5 hash is almost readable, but it has technical problems (1: using an MD5 hash for the filename is a terrible idea; 2: adding the time isn&#8217;t going to make <em>any</em> significant improvement to this terrible idea).</p>
<p>Okay, so he had a bad paragraph.  Lighten up?  I would love to, but the whole book is like this.  Let&#8217;s try the intro to the next section:</p>
<blockquote><p><strong>But I Want to Add Cookies!</strong></p>
<p>Here is where the drawbacks of rolling your own become apparent.  You have your blog application running, but now you want to add authentication.  To add support for it, you have to add it myself.</p></blockquote>
<p>Admittedly, the use of &#8220;myself&#8221; instead of &#8220;yourself&#8221; is a simple grammatical error.  But rest assured, the book is riddled with similar errors.  I did not look hard for these.  And the guy is an english major, so this sort of thing is supposed to be his strong point.</p>
<p>The first page has an overview where he tries to answer the question: Why Objective Caml?  He answers with an analogy:</p>
<blockquote><p>To answer in not-so-mundane terms, we can compare what an architect might want in building materials versus what a carpenter might want in building materials.  An architect wants the best materials to <em>build</em> with, but a carpenter wants the best materials to <em>work</em> with.  This is as it should be&#8211;the carpenter values the work and wants to do it well.  The architect, however, might not have the specific concerns the carpenter does.  This is as true in software as it is in wood.</p></blockquote>
<p>Huh?  Who is better, the architect or the carpenter?  What does this have to do with programming?  Ah, he goes on in the next paragraph, surely he&#8217;ll explain it:</p>
<blockquote><p>As a programmer, I want good materials.  OCaml is one of the best materials I can think of.</p></blockquote>
<p>..need I say more?</p>
<p>But I&#8217;m going to.  A technical book like this need not be well written to be useful.  After all, it&#8217;s teaching you how to code, so it&#8217;s got tons of code examples.  Examples, when thoughtful, concise, and correct, can be very helpful.  Bummer that the examples in <em>Practical OCaml</em> have none of these properties.</p>
<p>The first and most obvious problem is the formatting of the code.  It&#8217;s a bit hard to explain, but the code samples have these little arrows all over that mean &#8220;this line continues&#8221; because the code didn&#8217;t all fit on one line. Usually this is because there&#8217;s too much code trying to squeeze into one line. An example <code>(***</code> marks the spot where the little arrow is in the actual text):</p>
<p><pre><code>
let print_position pos = print_string &quot;Holding: &quot;;print_int ***
pos.holding;print_string (&quot; &quot; ^ pos.symbol ^ &quot;@&quot;);
print_float pos.pprice;print_newline ();;
</code></pre></p>
<p><em>Nobody</em> indents their code like this.  It&#8217;s completely unreadable.  The same function, properly indented, should look like:</p>
<p><pre><code>let print_position pos =
&nbsp;&nbsp;print_string &quot;Holding: &quot;;
&nbsp;&nbsp;print_int pos.holding;
&nbsp;&nbsp;print_string (&quot; &quot; ^ pos.symbol ^ &quot;@&quot;);
&nbsp;&nbsp;print_float pos.pprice;
&nbsp;&nbsp;print_newline ();;</code></pre></p>
<p>Actually, since we learned about the printf function earlier this chapter, let&#8217;s see how much more concisely and cleanly we can write this code:</p>
<p><pre><code>let print_position pos =
&nbsp;&nbsp;printf &quot;Holding: %d %s@ %f\n&quot; pos.holding pos.symbol pos.pprice
</code></pre></p>
<p>Enough about indentation.  What about content?</p>
<p><pre><code>module type LIFER =
sig
&nbsp;&nbsp;val xdim: int;
&nbsp;&nbsp;val ydim: int
&nbsp;&nbsp;val results: int * int * int * int * int * int * int * int -&gt; int -&gt; int
&nbsp;&nbsp;val default_colormap: int -&gt; char * char * char
&nbsp;&nbsp;val default_mapcolor: char -&gt; char -&gt; char -&gt; int
end</code></pre></p>
<p>What in the world is a <code>results</code>?  A function that takes an 8-tuple of ints, then one more int, and returns an int?  What are all these ints?  Any OCaml programmer would look at this and say it&#8217;s very bad style, because it&#8217;s extremely hard to read.  It should be a record instead.  Let&#8217;s go on..</p>
<p><pre><code>...
match res with
&nbsp;&nbsp;remain when (res = 2) -&gt; x
&nbsp;&nbsp;| live when (res = 3) -&gt; 1
&nbsp;&nbsp;| gain when (res = 4) -&gt; 2
&nbsp;&nbsp;| more when (res = 5) -&gt; 3
&nbsp;&nbsp;... </code></pre></p>
<p>This is not only confusing, it wouldn&#8217;t even compile.  Well, depending on your compiler settings, it <em>might</em> compile, but the compiler would complain loudly because <code>remain</code>, <code>live</code>, <code>gain</code>, and <code>more</code> are not even used.  Here is code that is simpler, doesn&#8217;t create a compiler warning, and does the <em>exact</em> same thing as the above code:</p>
<p><pre><code>...
match res with
&nbsp;&nbsp;| 2 -&gt; x
&nbsp;&nbsp;| 3 -&gt; 1
&nbsp;&nbsp;| 4 -&gt; 2
&nbsp;&nbsp;| 5 -&gt; 3
&nbsp;&nbsp;...
</code></pre></p>
<p>Heck, we could even write it like this:</p>
<p><code>... if res = 2 then x else res - 2 ...</code></p>
<p>(simpler, eh?)</p>
<p>And this is just basic pattern matching; elementary OCaml stuff.</p>
<p>These are some of the more glaring and easily visible issues that I&#8217;ve happened across during a recent perusal of the book.  There are other, much more insidious types of problems which require a reasonable understanding of OCaml to catch.  For example, the first demonstration in the object chapter shows how to use the object system to automate the initialization of the random number generator:<br />
<pre><code>
class random =
object
&nbsp;&nbsp;method int x = Random.int x
&nbsp;&nbsp;method float x = Random.float x
&nbsp;&nbsp;method rand () = Random.float 1.
&nbsp;&nbsp;initializer Random.self_init ();Printf.printf &quot;Random Constructor&quot;
end
</code></pre></p>
<p>What he&#8217;s clearly missing here is that when you call <code>Random.self_init ()</code>, this re-initializes the random number generator in a global, stateful way.  So the whole notion of encapsulating the initialization of the random number generator is lost.  In fact, the entire two-page example is based on a false premise.</p>
<p><strong>In conclusion </strong></p>
<p>Anyone who wants to learn OCaml should stay away from this book.  It will only confuse.  This is unfortunate, as the idea to shed light on the practicality of OCaml is an excellent one.  I&#8217;m rather shocked that Richard Jones signed on to be technical editor, and that he let the book be published in this state (<strong>edit</strong>: see his explanation in comment #2 below).</p>
<p>I would urge any and everyone to <strong>not</strong> buy this book, and don&#8217;t let your friends read it; it will taint their view of OCaml and quite possibly confuse them enough to keep them away from OCaml forever.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2006/11/04/review-of-practical-ocaml/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I looove lightning bolt dsl</title>
		<link>http://www.phauna.org/2006/04/29/i-looove-lightning-bolt-dsl/</link>
		<comments>http://www.phauna.org/2006/04/29/i-looove-lightning-bolt-dsl/#comments</comments>
		<pubDate>Sat, 29 Apr 2006 17:32:23 +0000</pubDate>
		<dc:creator>qxzn</dc:creator>
				<category><![CDATA[reviews]]></category>

		<guid isPermaLink="false">http://www.phauna.org/2006/04/29/i-looove-lightning-bolt-dsl/</guid>
		<description><![CDATA[And here&#8217;s my review to prove it. I can&#8217;t decide which I like better, the great customer service, the geeky way Brent sounds when he answers the phone, or the fact that the name reminds me of this sweet larping video.
]]></description>
			<content:encoded><![CDATA[<p>And <a title="review of lightning bolt" href="http://www.dslreports.com/comment/1896/56073?r=206">here&#8217;s my review</a> to prove it. I can&#8217;t decide which I like better, the great customer service, the geeky way Brent sounds when he answers the phone, or the fact that the name reminds me of <a title="sweet larping video" href="http://fun.phauna.org/ogrebattle.mpg">this sweet larping video</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phauna.org/2006/04/29/i-looove-lightning-bolt-dsl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
