<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3608739767243883233</id><updated>2011-10-06T09:26:31.725-07:00</updated><category term='randomness'/><category term='Python'/><category term='Make'/><category term='PS3 Cell'/><category term='parallel programming'/><category term='natural computation'/><category term='ray tracing'/><category term='backpacking'/><category term='C Language'/><category term='Perl'/><category term='Standard ML'/><category term='evolution'/><category term='Ant Colony Optimization'/><category term='Haskell'/><category term='audio'/><category term='Go Language'/><category term='essentialism'/><category term='Scala'/><category term='android'/><category term='economics'/><category term='GPGPU'/><category term='Ruby'/><category term='Language'/><category term='quotes'/><category term='simulation games'/><category term='Genezzo'/><category term='code generation'/><category term='Erlang'/><title type='text'>Proliferation of Niches</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-335858506502750384</id><published>2011-10-02T21:24:00.000-07:00</published><updated>2011-10-02T22:03:53.307-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><category scheme='http://www.blogger.com/atom/ns#' term='natural computation'/><title type='text'>Evolution as Scientific Method, and Vice Versa</title><content type='html'>Evolution can be viewed as an implementation of the scientific method by nature.  In each generation mutation and genetic recombination produce varied hypothesis (individuals), and these hypothesis are tested in the environment [sample hypothesis: a small-beaked &lt;a href="http://en.wikipedia.org/wiki/Darwin's_finches"&gt;Darwin's Finch&lt;/a&gt; is better suited to the food available on this island].  Those hypothesis which best survive this natural selection will produce new generations of hypothesis to be tested (differential reproduction).  Hypothesis  which are unsuccessful in the natural environment will die out.&lt;br /&gt;&lt;br /&gt;Alternately the scientific method can be viewed as an implementation of evolution by man.  Scientists generate variations of existing hypothesis, and subject these individual hypothesis to testing in the laboratory environment.  The hypothesis which survive this testing will be used to generate new hypothesis.  Hypothesis which are unsuccessful in the laboratory environment will die out.&lt;br /&gt;&lt;br /&gt;This duality is most clearly seen in the use of techniques such as genetic algorithms in computer programming.  Here analogues to mutation and genetic recombination are used to automatically generate new hypothesis from previous generations, and the "environment" consists of a fitness function that represents whatever problem is being optimized.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-335858506502750384?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/335858506502750384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=335858506502750384' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/335858506502750384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/335858506502750384'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/10/evolution-as-scientific-method-and-vice.html' title='Evolution as Scientific Method, and Vice Versa'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8506728634124188851</id><published>2011-08-30T22:24:00.000-07:00</published><updated>2011-08-30T22:31:27.300-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Ayn Rand, Authoritarian</title><content type='html'>&lt;span style="font-style:italic;"&gt;"If the Rand line was totalitarian, encompassing all of one’s life, then, even when all the general premises were agreed upon and Randians checked with headquarters to see who was In or Out, there was still need to have some "judicial" mechanism to resolve concrete issues and to make sure that every member toed the line on that question. No one was ever allowed to be neutral on any issue. The judicial mechanism to resolve such concrete disputes was, as usual in cults, the rank one enjoyed in the Randian hierarchy. By definition, so to speak, the higher-ranking Randian was right, the lower one wrong, and everyone accepted this &lt;b&gt;Argument from Authority&lt;/b&gt; that might have seemed not exactly consonant with the explicit Randian devotion to Reason."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Murray N. Rothbard, &lt;a href="http://www.lewrockwell.com/rothbard/rothbard23.html"&gt;The Sociology of the Ayn Rand Cult&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8506728634124188851?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8506728634124188851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8506728634124188851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8506728634124188851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8506728634124188851'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/08/ayn-rand-authoritarian.html' title='Ayn Rand, Authoritarian'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-728403882604443045</id><published>2011-07-30T00:56:00.000-07:00</published><updated>2011-07-30T01:59:30.750-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><title type='text'>Dueling Metaphors</title><content type='html'>As discussed &lt;a href="http://proliferationofniches.blogspot.com/2009/06/sapir-whorf-revisited.html"&gt;earlier&lt;/a&gt;, much of our advanced, abstract thinking is grounded in the use of metaphors from basic physical experience.  George Lakoff has presented two basic alternative moral frameworks, both drawn from the family:  the strict father model, and the nurturant parent model.  He sees conservative politics and religion as based on the strict father metaphor, and liberal politics and religion as based on the nurturant parent metaphor.  Currently another family metaphor is in the news:  the family budget.  Must a nation, like a family, balance its budget?  This dispute is fascinating in the ways it both matches and reverses the Lakoffian metaphorical expectations.&lt;br /&gt;&lt;br /&gt;As expected, the "strict father" conservatives insist the nation, like a family, must balance its budget.  The liberals are viewed as overly indulgent parents who allow their children to overspend.  The interesting part is the second metaphor in the conflict:  money.   In a world of fiat currency, what is money?  Is it a placeholder for a finite, non-renewable resource?  Is it a nebulous, re-evaluable abstraction?  Liberals insist the current U.S. debt situation is not a cause for concern.  Unlike Greece, the U.S. has its own currency.  Unlike other wrecked nations from the past, the U.S. debt is in its own currency, which is also the world reserve currency.  Liberals insist the conservatives are being thick, not understanding the new economics of the unique U.S. situation.&lt;br /&gt;&lt;br /&gt;Now this makes for an interesting reversal.  Conservatives, who normally insist on American exceptionalism, say in this case the U.S. is not exceptional.  More basically, the members of the conservative "faith based community" don't have faith in a deficit-spending fiat currency, while members of the liberal "reality based community" want everyone to have faith in the long-term stability of a fiat currency of a big deficit spender.  The conservative metaphor, of the family with a balanced budget, is easy for everyone to understand.  While the liberal idea of continuous deficit spending seems more like &lt;a href="http://proliferationofniches.blogspot.com/2009/12/fish-balance-of-hobbiton.html"&gt;magical thinking&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Of course there are many other complexities and Machiavellian motivations behind the current impasse.  And it will unfortunately probably be a fair while before the world revisits a core mistake that led to the current economic situation:  the idea that bondholders can't be allowed to take a loss.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-728403882604443045?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/728403882604443045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=728403882604443045' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/728403882604443045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/728403882604443045'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/07/dueling-metaphors.html' title='Dueling Metaphors'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-9042975091034876552</id><published>2011-06-30T23:59:00.000-07:00</published><updated>2011-07-01T01:46:42.677-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><title type='text'>Progress in Programming Languages</title><content type='html'>Many people recognize one form of progress in programming language design:  the addition of new features, usually forming higher levels of abstraction.  Less recognized is the dual of this form of progress:  the removal of older, usually lower level, features and freedoms.  Paradoxically the removal of language freedoms frees the mind to concentrate on more important parts of the problem at hand.&lt;br /&gt;&lt;br /&gt;The earliest programming languages, assembly languages, provided unlimited freedom at a micro level.  As an example, each developer was able (actually required) to invent their own conventions for calling subroutines.  They could pass parameters in (their own choice of) processor registers, or on a stack (ascending or descending), or in memory structures on a heap.  Each of these techniques had benefits and drawbacks, but in the end it was more important to standardize so that developers could share libraries of common modules and free up cognitive space for other issues.&lt;br /&gt;&lt;br /&gt;At a higher level, the C programming language (plus the operating system binary formats) standardized routine calling conventions, but left freedoms as to where variables are located and how they are passed.  C provides primitive types and records, locates them on the stack or heap, and supports direct memory pointers and pointer manipulation.  C++ adds slightly safer references, while retaining pointers.  Java, safer and at a higher level, takes away pointers and leaves only references.  Much of the safety becomes possible (and necessary) once memory garbage collection is added and low-level memory control is taken away.&lt;br /&gt;&lt;br /&gt;Other higher-level languages continue this pattern of addition and subtraction.  Python and Ruby add lists and dictionaries as built-in types, and take away direct use of native hardware types.&lt;br /&gt;&lt;br /&gt;Perl (yes, the topic of this post) is the oddball.  It added many beneficial higher-level features later found in Python and Ruby, but did not remove the low-level freedoms of C++ or even assembly.  Like assembly, Perl does not have a single built-in way to pass arguments to functions; instead "there's more than one way to do it" (the Perl motto) so users of CPAN libraries need to pay attention to the calling conventions for each library [and the common ways to do it, @_ and shift, are ridiculous].  Like C++, Perl has references.  It needs these because it allows objects to reside on either the stack or heap.  But there is no good reason for this distinction in a high-level garbage collected language, and it forces the programmer to explicitly reference (take address-of) and dereference using \, $, etc. (like &amp; and * for C pointers!).  Even Java references don't require explicit dereferencing and disallow address-of.&lt;br /&gt;&lt;br /&gt;Perl has these issues partly because it was an early introducer of new higher-level features, and didn't want to break compatibility with older Perl programs by removing lower-level functionality and freedoms.  But this means the language requires much more cognitive space to understand than newer languages like Python and Ruby, and leaves less cognitive space available for solving the problem at hand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-9042975091034876552?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/9042975091034876552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=9042975091034876552' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/9042975091034876552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/9042975091034876552'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/06/progress-in-programming-languages.html' title='Progress in Programming Languages'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-894163871725388156</id><published>2011-06-29T00:51:00.000-07:00</published><updated>2011-06-29T01:30:13.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backpacking'/><title type='text'>Backpacking Gear Test 2011</title><content type='html'>&lt;a href="https://picasaweb.google.com/lh/photo/Mapt70x0K3AX8I0qUzfyTA?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-ONTqlQwEc-8/TgjdaGRTsaI/AAAAAAAAA_c/t3sDdEsK-N0/s288/IMG_20110626_120037.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For last year's &lt;a href="http://proliferationofniches.blogspot.com/2010/05/backpacking-gear-test-2010.html"&gt;Backpacking Gear Test&lt;/a&gt; I had a base weight (without fuel, water, fuel) of 16 lbs and a total pack weight of 22 lbs.  This year I experimented with some different equipment for a base weight of 14 lbs and a total pack weight of 19 lbs: a reduction of 11%.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://spreadsheets.google.com/pub?key=tiMkKL-GXXRrY-4KXsh3B1w&amp;output=html"&gt;Gear Weights&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;I took the 2011 gear on an overnight hike from Old Coast Road to Pico Blanco Camp in the Ventana Wilderness, 6 miles each way.  This trail is &lt;span style="font-weight:bold;"&gt;NOT&lt;/span&gt; recommended, as it is very rough and difficult to follow.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rei.com/product/772421/osprey-variant-52-pack"&gt;Osprey Variant 52 Pack&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/7I7J52C2OmSU5pRf41cZGA?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/-RMZmwSz882U/TgjcLH6MJLI/AAAAAAAAA_I/-J-8QcD78VY/s288/IMG_20110625_142735.jpg" height="288" width="216" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This pack is slightly heavier than last year's Granite Gear pack, and should be more durable.  With metal framing instead of just plastic, it better supports loads.  It is actually intended for ski mountaineering/rock climbing, and was quite maneuverable when crawling over and under logs.  The external gear attachment points were useful for boots for wading water crossings.  The external pockets are too small for water bottles, so I carried all water and everything else inside the pack.  This was important when crashing through tall brush.  At 52 L the capacity is smaller than my other packs, but I was only carrying a bivy instead of a tent.  With the expansion collar extended it has plenty of capacity for Jeep trips, though it isn't well balanced when packed that tall.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rei.com/product/778999/marmot-alpinist-bivy"&gt;Marmot Alpinist Bivy&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/3OS1Svjl4x0wWAiCEZx-rQ?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/-nCFPJcA1lkE/Tgjbu_XEo1I/AAAAAAAAA_A/nKMetFnyEBQ/s288/IMG_20110626_075112.jpg" height="216" width="288" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sleeping under the stars was enjoyable in the bivy, though I might have a different opinion if it had rained.  In the morning there was a small amount of condensation on the outside of the sleeping bag and inside of the bivy, and this condensation may have contributed to an early morning chill greater than the temperature warranted.  Both did dry quickly once the sun rose.&lt;br /&gt;&lt;br /&gt;As seen on the spreadsheet the other big weight savings was from omitting all the cooking gear and dehydrated food, and only bringing Powerbars.  This is tolerable for an overnight, but would not be for longer.  I may experiment next with other varieties of uncooked food for short trips.  Hiking with the low weight was enjoyable, and this trail would have been even more difficult with my usual heavier load.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-894163871725388156?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/894163871725388156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=894163871725388156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/894163871725388156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/894163871725388156'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/06/backpacking-gear-test-2011.html' title='Backpacking Gear Test 2011'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-ONTqlQwEc-8/TgjdaGRTsaI/AAAAAAAAA_c/t3sDdEsK-N0/s72-c/IMG_20110626_120037.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2399713419428127841</id><published>2011-06-18T10:01:00.000-07:00</published><updated>2011-06-18T10:19:50.025-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><title type='text'>Trust</title><content type='html'>What do pensions and nuclear power have in common?  Both require managers empowered to make prudent, long-term safety decisions.  In the case of pensions the basic principles are well-known; this isn't "nuclear science".  But in both cases public pressure for short-term pain aversion make safe operation impossible, independent of the selflessness of management.  And incompetent, corrupt, or untrustworthy management makes it much worse.&lt;br /&gt;&lt;br /&gt;The list of other systems and institutions incompatible with the current environment is probably quite long...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2399713419428127841?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2399713419428127841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2399713419428127841' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2399713419428127841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2399713419428127841'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/06/trust.html' title='Trust'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7940502558105082172</id><published>2011-05-19T09:49:00.000-07:00</published><updated>2011-05-19T09:56:50.142-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Geometry and Experience</title><content type='html'>&lt;span style="font-style:italic;"&gt;"As far as the laws of mathematics refer to reality, they are not certain; and as far as they are certain, they do not refer to reality."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Albert Einstein, &lt;a href="http://www-history.mcs.st-and.ac.uk/Extras/Einstein_geometry.html"&gt;Geometry and Experience&lt;/a&gt;, 1921&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7940502558105082172?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7940502558105082172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7940502558105082172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7940502558105082172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7940502558105082172'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/05/geometry-and-experience.html' title='Geometry and Experience'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7183442639502328820</id><published>2011-05-12T06:48:00.000-07:00</published><updated>2011-05-19T10:07:32.516-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><title type='text'>The conflict between science and religion</title><content type='html'>&lt;div&gt;&lt;p&gt;The unrecognized heart of the conflict between science and religion is the appeal to authority.&amp;#160; Science does not recognize an appeal to authority as a valid argument, while most religious argument is ultimately based on appeal to religious authority.&amp;#160; This has left people divided into three basic camps:&lt;/p&gt;&lt;p&gt;1)&amp;#160; Those who believe appeal to religious authority can provide true answers in all areas, not just religion.&lt;/p&gt;&lt;p&gt;2)&amp;#160; Those who believe appeal to authority is never a valid argument, in religion or any other area.&lt;/p&gt;&lt;p&gt;3)&amp;#160; Those who believe appeal to authority is a valid argument in areas traditionally or currently demarcated as "religion", but not a valid argument in areas demarcated as "science".&amp;#160; This demarcation would match Stephen Jay Gould's "Non-overlapping Magisteria", although (at least in his short article) he doesn't rationalize it in terms of validity of argument from authority.&amp;#160; I think camp (1) is actually in a stronger position, in asking why if argument from religious authority is considered valid in the "magisteria" of religion why it is not valid everywhere.&amp;#160; After all, the religious works they are referencing do not contain disclaimers to this effect.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7183442639502328820?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7183442639502328820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7183442639502328820' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7183442639502328820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7183442639502328820'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/05/conflict-between-science-and-religion.html' title='The conflict between science and religion'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-1317503479848317232</id><published>2011-05-12T05:35:00.000-07:00</published><updated>2011-05-19T10:37:01.072-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><title type='text'>Essentialism and Authority</title><content type='html'>&lt;div&gt;&lt;p&gt;When disputing game rules, or rules in general, one often hears the phrase "according to Hoyle".&amp;#160; This is an appeal to authority, to a book of game rules first compiled by Edmund Hoyle.&amp;#160; These games, such as chess, existed in earlier forms long before he compiled the rules.&amp;#160;&amp;#160; One might argue that there is an "essence" of chess, and a platonic form or ideal of chess, which pre-existed its discovery by humans.&amp;#160;&amp;#160; If this were true, how close are we to the ideal?&amp;#160; Does it include a modern powerful queen? Castling?&amp;#160; Of course, this kind of essentialism sounds silly.&amp;#160; We understand the rules of chess were made up by humans, and that appeals to the authority of Hoyle are a matter of convention.&amp;#160; There is no possibility of a science of empirical "discovery" of the rules of chess.&amp;#160; Note observation of games also would not arrive at the rules, since for instance castling may never occur in the set of observed games.&amp;#160; So statements about chess are not provisionally true, pending additional observations.&lt;/p&gt;&lt;p&gt;Geometry can also be viewed as a game played with specified rules.&amp;#160; An initial set of postulates is chosen, and from them new theorems are derived.&amp;#160; Euclid codified the first set of postulates, and for centuries Euclid was cited as the authority.&amp;#160; Geometric figures became key examples in essentialism.&amp;#160; Much later, with the invention of non-Euclidean geometry, it was discovered other starting postulates were possible.&lt;/p&gt;&lt;p&gt;The rules of mathematics are much more closely tied to science than the rules of chess, and seem much less arbitrary.&amp;#160; Mathematical theorems are not provisionally true in the sense that new experimental data could overturn them.&amp;#160; But they are provisionally true in the sense that errors could always be found in the proofs.&amp;#160; And a connection between any particular mathematical system and the physical world is always provisional, pending new observations.&amp;#160; The most prominent dispute, from the theory of general relativity, is whether the large scale geometry of spacetime is flat (Euclidean geometry) or curved (non-Euclidean).&amp;#160;&amp;#160; And this contradicts Kant's primary example of synthetic apriori knowledge -- things we know to be true independent of any observation of the world.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-1317503479848317232?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/1317503479848317232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=1317503479848317232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1317503479848317232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1317503479848317232'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/05/essentialism-and-authority.html' title='Essentialism and Authority'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4802149645526970372</id><published>2011-03-27T00:23:00.000-07:00</published><updated>2011-03-27T01:10:52.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backpacking'/><title type='text'>Where's Eric?</title><content type='html'>I recently investigated CB radios for use on an upcoming &lt;a href="http://jeepjamboreeusa.com/"&gt;Jeep Jamboree&lt;/a&gt;.  On the forums I saw some folks also using ham radios.  This looked interesting, so I studied for and obtained an &lt;a href="http://en.wikipedia.org/wiki/Amateur_radio"&gt;amateur radio&lt;/a&gt; license, and got a Yaesu VX-8GR 144/430 MHz handheld.  This handheld also has a GPS, and supports &lt;a href="http://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System"&gt;APRS&lt;/a&gt; (Automatic Packet Reporting System).  With APRS enabled the radio will regularly broadcast its current position and status to nearby APRS enabled receivers.&lt;br /&gt;&lt;br /&gt;My last reported position and status is available mapped at &lt;a href="http://aprs.fi/?call=kj6njo-7"&gt;http://aprs.fi/?call=kj6njo-7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While the web display is similar to position displays enabled via smart phones, it differs in fundamental ways.  APRS is peer-to-peer over radio, so each station is communicating directly with other nearby stations.  Each handheld is able to directly generate and display the list of nearby stations, without using internet connectivity.  This means a group of APRS users outside cell range can operate independently.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;he_track = "kj6njo-7";&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript" src="http://aprs.fi/js/embed.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4802149645526970372?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4802149645526970372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4802149645526970372' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4802149645526970372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4802149645526970372'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/03/wheres-eric.html' title='Where&apos;s Eric?'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8748893176842429833</id><published>2011-01-17T14:36:00.000-08:00</published><updated>2011-01-17T14:45:44.654-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><title type='text'>Provisional Truth Flowchart</title><content type='html'>&lt;img src="https://docs.google.com/drawings/pub?id=1x1ozvpcLQjjb-VOXABEDlFdvFs-e3OwKJUW1jLRIuq0&amp;amp;w=480&amp;amp;h=360"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8748893176842429833?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8748893176842429833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8748893176842429833' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8748893176842429833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8748893176842429833'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2011/01/provisional-truth-flowchart.html' title='Provisional Truth Flowchart'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4588769341386679779</id><published>2010-12-26T09:50:00.000-08:00</published><updated>2010-12-27T08:18:44.441-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='randomness'/><title type='text'>Precognition and 5%</title><content type='html'>Many areas of scientific research such as psychology, medicine, and economics make heavy use of tests of &lt;a href="http://en.wikipedia.org/wiki/Statistical_significance"&gt;statistical significance&lt;/a&gt;.  A popular significance level is 5%; this means that the experiment results are less than 5% likely to have occurred by random chance.  While these tests are arguably valid and useful, with the wide availability of automated experimentation and computerized data mining they become ever easier to unintentionally and intentionally game.&lt;br /&gt;&lt;br /&gt;One well-known mistake is to omit necessary corrections when using the same data set to test multiple hypothesis.  If a single hypothesis is 5% likely to be true by random chance, then by testing 14 hypothesis against the same data set it is over 50% likely [1 - (1 - .05)^14 = 0.51] to find at least one false positive result.  Besides correction factors, a common solution is to have two separate data sets, where one set is used for data mining for possible hypothesis, and a second set is used to verify the result.  On a large scale, however, poor hypothesis can still pass this second filter.  This is especially true when the hypothesis themselves are being automatically generated and not based on any previously known plausible physical mechanisms.&lt;br /&gt;&lt;br /&gt;A related problem is known as the "file drawer effect":  positive results are published, while negative results remain in the "file drawer".  This creates a serial version of the problem above, where if the same hypothesis is tested 14 times then by random chance it is over 50% likely to be confirmed at least once.  The negative results are never published.  There is a movement to publish negative results, but this is also problematic because the negative results may be due to recognized poor experimental procedure.  These problems reduce the usefulness of meta-studies, since they are summarizing and aggregating the results of positive studies without having accurate information about how many other negative studies were never published.&lt;br /&gt;&lt;br /&gt;These issues are becoming more &lt;a href="http://www.newyorker.com/reporting/2010/12/13/101213fa_fact_lehrer"&gt;well known&lt;/a&gt;, as problematic results in areas such as clinical drug trials are found.  A useful "canary in the coal mine" for statistical techniques is &lt;a href="http://en.wikipedia.org/wiki/Parapsychology"&gt;parapsychology&lt;/a&gt;.  While confirmation of abilities such as &lt;a href="http://en.wikipedia.org/wiki/Precognition"&gt;precognition&lt;/a&gt; (seeing the future) is possible, it is much more likely to indicate that statistical standards for research and publication in a field (in this case psychology) have fallen too low.  Recently the paper &lt;a href="http://rationalwiki.org/wiki/Feeling_the_Future:_Experimental_Evidence_for_Anomalous_Retroactive_Influences_on_Cognition_and_Affect"&gt;"Feeling the Future: Experimental Evidence for Anomalous Retroactive Influences on Cognition and Affect" by Daryl J. Bem&lt;/a&gt; was accepted for publication in a prominent psychology journal.  Critics claim the author has made numerous mistakes, including those discussed above.  Bem found subjects could predict a future result correctly 53.1% of the time (where random chance was 50%).  But as Wagenmakers, etc. have have pointed out a similar large-scale test has been running for a long time:  casino roulette.  In European roulette the &lt;a href="http://en.wikipedia.org/wiki/Roulette#House_edge"&gt;house edge&lt;/a&gt; is 2.7% [36 to 1 odds against winning; 35 to 1 payout], so gamblers with Bem's 3.1% edge would have cleaned out the casinos already.  It is suspicious that in most studies which do find psychic abilities it hovers at the edge of the statistical significance value chosen for the study.&lt;br /&gt;&lt;br /&gt;Bem's response to critics is amusing.  A major part of his defense is appeal to authority:  the referees of his paper accepted it for publication in a prominent journal, and his statistical techniques are commonly accepted in psychology.  He defers to another author (&lt;a href="http://deanradin.blogspot.com/2010/12/my-comments-on-alcocks-comments-on-bems.html"&gt;Radin&lt;/a&gt;) for defense of the historical record of parapsychological research.  Radin cites meta-studies and makes an even more dubious appeal to authority:  the U.S. patent office.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4588769341386679779?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4588769341386679779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4588769341386679779' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4588769341386679779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4588769341386679779'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/12/precognition-and-5.html' title='Precognition and 5%'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2690297565204539189</id><published>2010-12-17T20:47:00.000-08:00</published><updated>2010-12-30T00:07:19.406-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='Language'/><title type='text'>Poor Pluto</title><content type='html'>The &lt;a href="http://www.boingboing.net/2010/12/15/how-many-dwarfs-are.html"&gt;demotion of Pluto&lt;/a&gt; from planet to dwarf planet (or planetoid) provides another example of the themes of my previous posts.  Like the definition of "species", the definition of "planet" is vague, man-made, and changes over time.  Scientific authorities also alter the membership of the category based on new information.  These changes make many people (especially children) upset.  I suspect changes to the planets also cause cognitive dissonance due to their ancient connections to astrology, mythology, and religion.  The unchanging nature of &lt;b&gt;heavenly&lt;/b&gt; objects was a bedrock belief: "as sure as the sun will rise."  Yes, Pluto was not one of the original planets visible to the naked eye, but like the others on discovery it was given the name of a Roman (formerly Greek) god.  Today people don't consciously remember how much of our daily language is based on past mythology.  My favorite example (besides the planets) is the English names of the days of the week:&lt;br /&gt;&lt;br /&gt;Sunday    : Sun&lt;br /&gt;Monday    : Moon&lt;br /&gt;Tuesday   : Tyr (Norse god)&lt;br /&gt;Wednesday : Woden / Odin (Norse god)&lt;br /&gt;Thursday  : Thor (Norse god)&lt;br /&gt;Friday    : Freya (Norse goddess)&lt;br /&gt;Saturday  : Saturn (Roman god)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2690297565204539189?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2690297565204539189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2690297565204539189' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2690297565204539189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2690297565204539189'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/12/poor-pluto.html' title='Poor Pluto'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8189714692944461105</id><published>2010-12-12T12:16:00.000-08:00</published><updated>2010-12-12T15:10:29.403-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Darwinism and Authority</title><content type='html'>American critics of evolutionary theory often prefer to use the term "Darwinism".  In doing so they reveal the philosophical,  psychological, and theological underpinnings of their world-view: the &lt;a href="http://en.wikipedia.org/wiki/Argument_from_authority"&gt;argument from authority&lt;/a&gt; &lt;br /&gt;&lt;blockquote&gt;Appeal to authority is a fallacy of defective induction, where it is argued that a statement is correct because the statement is made by a person or source that is commonly regarded as authoritative.&lt;/blockquote&gt; Scientists don't believe the theory of evolution is correct because it was originally formulated by Charles Darwin, or because it was presented in his book "The Origin of Species by Means of Natural Selection".&lt;br /&gt;&lt;br /&gt;Scientific presentations of new theories consist of two parts:  the theory itself, and the gathered data which this theory explains.  The availability of the gathered data means other scientists can check its validity and see whether it actually supports the proposed theory, or matches some other theory better.  For example, the finches Darwin gathered in the Galapagos islands are actually still stored in the &lt;a href="http://www.nhm.ac.uk/research-curation/collections/collections-management/collections-navigator/transform.jsp?rec=/ead-recs/nhm/cld-051009.xml"&gt;bird collection&lt;/a&gt; of the British Natural History Museum.  Additionally, future scientists can gather additional data and perform new experiments to confirm, expand on, or refute Darwin's original theories.  So far new gathered data has confirmed Darwin's basic theories, and vastly expanded on them (understandable, since Darwin was not even aware of Mendelian genetics, let alone DNA).  But this new research is not being done to defend Darwin's legacy.  Young scientists would be overjoyed to discover a radical new experimental finding or theory which overturns Darwin, and are feverishly looking for this.  This very &lt;b&gt;possibility&lt;/b&gt; of being wrong is what makes evolution a &lt;b&gt;scientific&lt;/b&gt; theory.&lt;br /&gt;&lt;br /&gt;An earlier &lt;a href="http://proliferationofniches.blogspot.com/2009/10/dawkins-on-essentialism.html"&gt;post&lt;/a&gt; quoted Dawkins on how children are natural essentialists.  I argue children are also, both by nature and nurture, believers in the argument from authority.  Children want all statements to have invariant mappings to the categories "true" or "false".  The vague category "as best we can tell right now, pending future information" is confusing and upsetting.  Teachers and parents are also natural authority figures, and don't have the time (and often background) to explain the rationale behind all their instructions.  Elementary memorization is useful, and a child which questioned &lt;b&gt;everything&lt;/b&gt; would be impossible to teach.  But for many students this attitude continues to their study of science, so Newton, and Einstein, and Darwin become unquestioned authority figures.  They don't go back to see that these scientist's work consisted of the same type of presentation discussed above:  theories with supporting evidence.&lt;br /&gt;&lt;br /&gt;Critics of "Darwinism" are often actually modeling their critique on their early childhood religious upbringing.  Early authority figures in their life (their parents) presented additional authority figures (church leaders) whose authority is ultimately derived from an unquestionable final authority figure (the religion's founder(s)).  The founders words are contained in unquestionable texts (the revealed sacred documents), and all necessary truths can be obtained through detailed study of those texts.  This technique of finding truths through interpretation of texts written by founders (and later texts written about texts written by founders) can arguably be useful in some fields such as law.  But it is of only historical interest in science.  The correctness of modern evolutionary theory is not bound up in the life of Darwin or the text of "The Origin of Species."&lt;br /&gt;&lt;br /&gt;&lt;i&gt;An amusing collision between intelligent design "science" and argument from religious authority is &lt;a href="http://www.gofbw.com/news.asp?ID=12220&amp;fp=Y"&gt;here&lt;/a&gt;.  Dembski is at risk of being "Expelled"...&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8189714692944461105?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8189714692944461105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8189714692944461105' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8189714692944461105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8189714692944461105'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/12/darwinism-and-authority.html' title='Darwinism and Authority'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7557809390893374978</id><published>2010-11-01T23:55:00.000-07:00</published><updated>2010-11-02T01:39:44.659-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>OpenCL GPGPU real-time ray tracing</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/OpenCL"&gt;OpenCL&lt;/a&gt; is the new open standard for &lt;a href="http://en.wikipedia.org/wiki/GPGPU"&gt;GPGPU&lt;/a&gt; (general-purpose computing on graphics processing units) programming.  It supports both graphics cards and multi-core processors with the same C99-based source code.  I've re-written the NVIDIA CUDA version of my &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;real-time ray tracer&lt;/a&gt; using OpenCL, and run it on an ATI/AMD Radeon HD 5870 GPU.  For comparison I also ran it in CPU mode on the Intel i7-980X (6 core, hyperthreaded) processor.&lt;br /&gt;&lt;br /&gt;&lt;iframe width='500' height='500' frameborder='0' src='https://spreadsheets.google.com/pub?key=0Ao1yTeMaUoTudGdES1RUNmhxSWk4cUM4SWg5aEpsc3c&amp;hl=en&amp;single=true&amp;gid=0&amp;output=html&amp;widget=true'&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The OpenCL CPU version provided similar results to the pthreads-generic version tested earlier.  With 10 objects in the scene the GPU performance was only slightly better than the CPU version.  But as the number of objects increased the GPU version maintained performance much better than the CPU version.  This indicates that with low object counts the actual work done by each GPU core is small relative to the setup and copying results back overheads.  Yes, a realistic ray tracer would be culling the scene graph so fewer objects would be evaluated for each point.  And the GPU version ran out of constant memory above 800 objects.  But this is much better scaling and performance than the NVIDIA CUDA test I did a few years ago.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7557809390893374978?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7557809390893374978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7557809390893374978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7557809390893374978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7557809390893374978'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/11/opencl-gpgpu-real-time-ray-tracing.html' title='OpenCL GPGPU real-time ray tracing'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7305713942400642188</id><published>2010-10-24T01:30:00.000-07:00</published><updated>2010-10-24T13:11:43.048-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='Go Language'/><title type='text'>Hyper-Threading</title><content type='html'>I've re-run my &lt;a href="http://home.mindspring.com/~eric_rollins/ray/cuda.html"&gt;real-time ray tracing&lt;/a&gt; and &lt;a href="http://home.mindspring.com/~eric_rollins/goAnt.html"&gt;Go ACO TSP&lt;/a&gt; programs on a 6 core processor with &lt;a href="http://en.wikipedia.org/wiki/Hyper-threading"&gt;hyper-threading&lt;/a&gt;.  The Intel i7-980X supports two hardware threads per core, so the OS sees it as a 12-core processor.&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;iframe width="610" height="1000" frameborder="0" src="https://spreadsheets.google.com/pub?key=0Ao1yTeMaUoTudEVjSUkxYmhIcmMxeWE5RnhfVll2SEE&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=1&amp;amp;output=html&amp;amp;widget=true"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;iframe width="610" height="1000" frameborder="0" src="https://spreadsheets.google.com/pub?key=0Ao1yTeMaUoTudEVjSUkxYmhIcmMxeWE5RnhfVll2SEE&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html&amp;amp;widget=true"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Here hyper-threading has improved performance for both programs in all configurations.  At one core both programs were sped up 28%.  At 6 cores ray tracing was sped up 9% versus non-HT, while ACO TSP was sped up 18% versus non-HT.  The higher speedup for ACO TSP is expected as it matches the general speedup from increased cores.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Both programs were run with 24 threads in all test configurations.  Having more program threads than cores*hardware_threads_per_core is key.  Otherwise the OS may schedule multiple threads on the same core while leaving others idle.  Linux is hyper-theading aware and attempts to avoid this scheduling problem, but doesn't always get it right.  In testing with 6 threads and 6 cores, I saw 28% &lt;b&gt;decreases&lt;/b&gt; in performance for both programs when hyper-threading was enabled.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;The Intel i7-980X also supports &lt;a href="http://www.intel.com/technology/turboboost/"&gt;"Turbo Boost"&lt;/a&gt;, where one core is automatically overclocked when other cores are idle.  Turbo boost was disabled for the tests above.  With one core and HT disabled, Turbo boost provides a speedup of 8% for both programs.  Surprisingly, with six cores and HT enabled (so all cores should be fully utilized) Turbo boost provides a speedup of 5% for both programs.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;The performance of Go has also improved relative to the single-threaded C version of ACO TSP. For 24 ants the C version finishes in 60 seconds, so on one core Go is only 1.7x slower than C. At 2 cores Go has exceeded the performance of the single-threaded C version. Previously Go was 2.8x slower than C on one core; I don't know whether this improvement is due to an improved Go compiler, the move to 64-bit compilers and OS, or architectural differences between the Intel Core 2 and i7-980X.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7305713942400642188?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7305713942400642188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7305713942400642188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7305713942400642188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7305713942400642188'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/10/hyper-threading.html' title='Hyper-Threading'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-3084364773861822260</id><published>2010-08-24T09:05:00.000-07:00</published><updated>2010-08-24T09:43:58.998-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><title type='text'>The Root Problem</title><content type='html'>What do homes, college tuition, and health care have in common?  They have all had massive price increases in recent years.  These increases were not funded by increased personal income.  Instead they were funded by a combination of increased risky borrowing capacity, and redistributing the costs through government programs or private insurance.  In the case of homes there is a current explicit debate about whether government price supports (like farm price supports!) would be a good thing.  In the case of tuition and health care the "price support" effect is less understood.  For all three there is little recognition that government subsidies are not free, partly due to current magical thinking around deficit spending (as discussed &lt;a href="http://proliferationofniches.blogspot.com/2009/12/fish-balance-of-hobbiton.html"&gt;earlier&lt;/a&gt;).  And because of this there is very slow movement toward the necessary final state:  one in which prices are lower, so that individuals can make payments out of regular income, without the need for risky loans or deficit-funded government subsidies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-3084364773861822260?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/3084364773861822260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=3084364773861822260' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3084364773861822260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3084364773861822260'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/08/root-problem.html' title='The Root Problem'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6793248228446047179</id><published>2010-07-14T23:06:00.000-07:00</published><updated>2010-07-14T23:29:37.429-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Brin on Rand's Essentialism</title><content type='html'>&lt;i&gt;"We do need a brief aside about Objectivism, which begins by proposing that reality exists independent of its perception.  This contrasts refreshingly against the subjective-relativism offered by today's fashionable neo-leftist philosophers, who claim (in blithe and total ignorance of science) that "truth" can always be textually redefined by any observer - a truly pitiable, easily-disproved, and essentially impotent way of looking at the world.&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;So far, so good.  Unfortunately, any fledgling alliance between Rand's doctrine and actual science breaks down soon after that.  For she further holds that objective reality is readily accessible by solitary individuals using words and logic alone.  This proposition - rejected by nearly all modern scientists - is essentially a restatement of the Platonic World-view, a fundamental axiom of which is that the universe is made up of ideal essences or "values" (the term Rand preferred) that can be discovered, dispassionately examined, and objectively analyzed by those few bold minds who are able to finally free themselves from the hoary assumptions of the past.  Once freed, any truly rational individual must, by simply applying verbal reasoning, independently reach the same set of fundamental conclusions about life, justice, and the universe.  (Naturally any mind that fails to do so must, by definition, not yet be free.)"&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;"The Art of Fiction, by Ayn Rand", a review by David Brin in his &lt;b&gt;Through Stranger Eyes&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6793248228446047179?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6793248228446047179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6793248228446047179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6793248228446047179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6793248228446047179'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/07/brin-on-rands-essentialism.html' title='Brin on Rand&apos;s Essentialism'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7792767676553340073</id><published>2010-05-23T22:02:00.001-07:00</published><updated>2010-05-24T08:42:27.505-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='Language'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>The Appeal of Fantasy Fiction</title><content type='html'>I've been thinking about the continued appeal of fantasy fiction, especially in relation to topics I have discussed before such as the Sapir-Whorf Hypothesis, Moral Realism, and Essentialism. Science fiction author David Brin has written several essays critical of fantasy fiction, including &lt;a href="http://www.salon.com/entertainment/feature/2002/12/17/tolkien_brin"&gt;J.R.R. Tolkien -- enemy of progress&lt;/a&gt;.  His basic theme is:&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;It's only been 200 years or so -- an eye blink -- that "scientific enlightenment" began waging its rebellion against the nearly universal pattern called feudalism, a hierarchic system that ruled our ancestors in every culture that developed both metallurgy and agriculture. Wherever human beings acquired both plows and swords, gangs of large men picked up the latter and took other men's women and wheat...  They then proceeded to announce rules and "traditions" ensuring that their sons would inherit everything.&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;Brin explains how these actions are ennobled in the literature passed down to us, such as the Iliad and Odyssey, the Bible, Arthurian legends, etc.  I've been thinking about how these values were embedded at a more basic level, in the language we still use.  Look at the term I used earlier:  &lt;span style="font-weight:bold;"&gt;ennobled&lt;/span&gt;.  The first online dictionary definition gives:&lt;br /&gt;&lt;blockquote&gt;1. to make noble, honourable, or excellent; dignify; exalt&lt;br /&gt;2. to raise to a noble rank; confer a title of nobility upon&lt;br /&gt;&lt;br /&gt;[Middle English *ennoblen, from Old French ennoblir : en-, causative pref.; see en-1 + noble, noble; see noble.]&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thefreedictionary.com/ennobled"&gt;http://www.thefreedictionary.com/ennobled&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://www.thefreedictionary.com/ennobled"&gt;&lt;/a&gt;Here, prior to the emergence of modern English, the concept of honorable behavior was bound up with the concept of the superiority of certain blood-lines of inherited privilege.  If you accept some form of the Sapir-Whorf Hypothesis, that language influences thought, then the use of the English language itself provides a subconscious favorable disposition to the idea of inherited privilege.  Critiques of the past or present nobility will inherently generate a certain amount of cognitive dissonance.  Also note that the idea of noble blood is "essentialist", and fits with humans natural predisposition towards essentialist thinking.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My hypothesis is that feudal and essentialist thinking are embedded throughout all languages, including English.  We aren't living in a feudal society, and science is constantly critiquing essentialist thinking.  This creates a constant tension in the minds of readers and speakers of English.  Fantasy fiction provides a release for this tension.  It is a place where the language fits with the action.  Often a magical land where essentialist expectations are reality.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fantasy fiction is in turn divided into two broad categories:  High Fantasy, and Swords and Sorcery.  High fantasy, of which Tolkien's &lt;b&gt;The&lt;/b&gt; &lt;b&gt;Lord of the Rings&lt;/b&gt; is the prime example, is centered on an epic struggle between Good and Evil.  Swords and Sorcery (think earlier pulp fiction, such as Howard's &lt;b&gt;Conan the Barbarian&lt;/b&gt;) is more morally ambiguous.  However essentialist expectations, such as the reality of magic and the supernatural, are still met.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most written Science Fiction today is closer to Swords and Sorcery in terms of moral ambiguity.  "Hard" science fiction follows modern science in rejecting essentialism.  While the "what ifs" of this type of fiction satisfy some readers, many others yearn for the moral black-and-whites provided by High Fantasy.  This demand is satisfied in popular science fiction films, such as &lt;b&gt;Star Wars&lt;/b&gt;.  Here the heroes turn out to be nobles (like Strider/Aragorn the returning king in LoTR!), matching the essentialist expectations bound up in our language.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7792767676553340073?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7792767676553340073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7792767676553340073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7792767676553340073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7792767676553340073'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/05/appeal-of-fantasy-fiction.html' title='The Appeal of Fantasy Fiction'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2170533868088085634</id><published>2010-05-23T15:12:00.000-07:00</published><updated>2010-05-23T18:28:56.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backpacking'/><title type='text'>Backpacking Gear Test 2010</title><content type='html'>&lt;a href="http://picasaweb.google.com/lh/photo/e7VG_Kk52ru-lTRlrhc0zA?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_lJDNOwOlWxI/S_mlmt49Y0I/AAAAAAAAAp0/9bSoSXVbpbo/s288/2010-05-22%2011.59.08.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In last year's &lt;a href="http://proliferationofniches.blogspot.com/2009/08/backpacking-gear-test.html"&gt;Backpacking Gear Test&lt;/a&gt; I achieved a base weight (without food, water, or fuel) of 23 lbs and a total pack weight of 30 lbs.  This year I have replaced various items, and gotten down to a base weight of 16 lbs and a total pack weight of 22 lbs : a reduction of 8 lbs, or over 25%.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spreadsheets.google.com/pub?key=tiMkKL-GXXRrY-4KXsh3B1w&amp;output=html"&gt;Gear Weights (spreadsheet)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I took all the 2010 listed gear to &lt;a href="http://www.parks.ca.gov/?page_id=538"&gt;Castle Rock State Park&lt;/a&gt;.  I hiked 2.6 miles (each way) with full pack to Castle Rock Trail Camp, and stayed overnight.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.granitegearstore.com/Product3.aspx?ProductId=164&amp;CategoryId=7"&gt;Granite Gear Escape A.C. 60 Pack&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/rVACppDbQj2qTB3k75iEVA?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_lJDNOwOlWxI/S_mlWONf18I/AAAAAAAAApw/8cJkpne6OMg/s288/2010-05-22%2012.37.10.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/BRLIFdzfo7Ugg9NAIT8EmQ?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_lJDNOwOlWxI/S_mlQ3E_I6I/AAAAAAAAAps/AHDG-mSCPgc/s288/2010-05-22%2012.36.50.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Escape is Granite Gear's newest ultralight pack.  Compared to last year's North Face El Lobo 65, it is over 2 lbs lighter.  It has 5  liters less rated capacity (60 versus 65L), but with the rest of this year's compact new gear I actually have more free space than before.  It is rated for a maximum load of 35 lbs (versus  70 for the El Lobo), but I've discovered I have zero interest in carrying heavy loads.   The Escape only has a plastic frame sheet (versus the internal aluminum X-frame of the El Lobo) and has a smaller hip belt, so the El Lobo would be preferable for heavy loads.   Overall I found the Escape with lighter load more comfortable than last year's El Lobo with heavier load.&lt;br /&gt;&lt;br /&gt;The Escape omits various features the El Lobo has, including separate sleeping bag compartment, attached padded belt for the detachable lid as a fanny pack (the Escape lid does have belt loops), extra zippered entries, etc.  It does also have a hydration compartment (internal pocket for a "camelback"  bladder, plus drinking tube ports), but I used the external bottle holsters instead.  They are angled so bottles can be accessed while the pack is on.  This frees up more internal space, and eliminates opportunities for liquid disasters.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bigagnes.com/Products/Detail/Tent/FlyCreekUL1"&gt;Big Agnes Fly Creek UL1 Tent&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/IacZ-3wfYXnz2eMkcPrLSA?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_lJDNOwOlWxI/S_mk9WL3E_I/AAAAAAAAApk/Ovb9yMhpry0/s288/2010-05-22%2013.20.35.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/F9mySfLvc_59b_rw5QJjIg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/S_mkprirxgI/AAAAAAAAApc/iCG4XxlFam8/s288/IMG_20100523_100412.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/wZmXSncuhFGvRXOdQVJAwg?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_lJDNOwOlWxI/S_mlLEXfhRI/AAAAAAAAApo/EWFx-zsSsgE/s288/2010-05-22%2013.21.05.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/8CEzNuHsqQsUdzcY9vY4Uw?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/S_mkiLjBSvI/AAAAAAAAApY/AzlV4iqzjW4/s288/IMG_20100523_094508.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This year I've switched to a one-person tent.  The Fly Creek UL1 saves over 2 lbs compared to last year's Sierra Designs Vapor Light 2 XL.  This tent is smaller : I can only sit upright in the exact enter of the tent, and my head does touch both sides when I do so.  My regular length North Face sleeping bag exactly fits in the tent length.  There isn't room to place my pack beside me, but since I only carry a short sleeping pad I use my empty pack as leg rest.  One nifty feature: a pocket in the mesh roof holds a headlamp perfectly positioned for night reading (see flyless second image).&lt;br /&gt;&lt;br /&gt;The tent is free-standing, though it needs 2 stakes at the rear to pull the foot area open.  It also came with the same aluminum stakes as last year's Vapor Light 2 (see stake picture with last year's blog entry).  This year I decided to give them a try.  They worked fine: no bent stakes.  And a tip:  the titanium wire handle of a folding spork can be placed  through the small hole to use as a stake-puller.  Don't try to pull them by hand.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cascadedesigns.com/therm-a-rest/mattresses/fast-and-light/prolite/product"&gt;Therm-a-Rest ProLite Air Mattress, Small&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See image inside tent, above.  This doesn't save weight compared to my earlier closed cell foam pad, but it is much more compact when rolled.  They do make an even lighter pad, but user comments have had concerns about durability.  As stated above I am using my empty pack as leg rest, so a small works fine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rei.com/product/764183"&gt;REI Ti Ware Titanium Pot - 0.9 Liter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I picked this up on close-out sale last year; this non-nonstick version has been discontinued.  I only use it to boil water for dehydrated meals, so I don't need the nonstick.  My stove melted the silicone coating off the fold-out wire handles almost immediately, so I threw the handles away and use the old pot-lifter from my MSR steel pot set instead.  This expensive pot does feel cheap (the lid wants to drop into the pot), but at 0.9L it does balance over my stove better the the 2L MSR pot, and most importantly it saves half a pound and a bunch of pack space.  Yes, I bought a folding Ti &lt;a href="http://www.rei.com/product/751779"&gt;spork&lt;/a&gt;, as my old plastic utensils won't fit inside the 0.9L pot.  As stated above, the spork wire handle can double as a tent stake puller...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Other Changes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Include headlamp instead of mini-mag-lite, and a lighter first aid kit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2170533868088085634?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2170533868088085634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2170533868088085634' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2170533868088085634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2170533868088085634'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/05/backpacking-gear-test-2010.html' title='Backpacking Gear Test 2010'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_lJDNOwOlWxI/S_mlmt49Y0I/AAAAAAAAAp0/9bSoSXVbpbo/s72-c/2010-05-22%2011.59.08.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7489038477916906571</id><published>2010-04-11T20:30:00.000-07:00</published><updated>2010-04-11T20:45:25.580-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>ECONned</title><content type='html'>&lt;span style="font-style:italic;"&gt;That brings us to a final outcome of this debacle.  A radical campaign to reshape popular opinion recognized the seductive potential of the appealing phrase "free markets".  Powerful business interests, largely captive regulators and officials, and a lapdog media took up this amorphous, malleable idea and made it a Trojan horse for a three-decade-long campaign to tear down the rules that constrained the finance sector.  The result has been a massive transfer of wealth, with its centerpiece the greatest theft from the public purse in history.  This campaign has been far too consistent and calculated to brand it with the traditional label, "spin".  This manipulation of public perception can only be called&lt;/span&gt; propaganda.  &lt;span style="font-style:italic;"&gt;Only when we, the public, are able to call the underlying realities by their proper names - extortion, capture, looting, propaganda - can we begin to root them out.&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;Yves Smith, &lt;span style="font-weight:bold;"&gt;ECONned: How Unenlightened Self Interest Undermined Democracy and Corrupted Capitalism&lt;/span&gt;, p. 308.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7489038477916906571?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7489038477916906571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7489038477916906571' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7489038477916906571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7489038477916906571'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/04/econned.html' title='ECONned'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-817023787456659304</id><published>2010-03-14T16:25:00.000-07:00</published><updated>2010-03-15T00:57:29.398-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simulation games'/><title type='text'>Game Time</title><content type='html'>Pen-and-paper role-playing games (RPGs) began as an expansion of rules for historical tabletop miniatures wargames.  Tabletop wargame rules were concerned with creating accurate simulations of historical battles -- including medieval battles, such as Agincourt.  Early RPGs modeled "heroes" as having the equivalent strength of several ordinary soldiers, and added rules for fantastic creatures, magic, and advanced technology.  But the rules kept realism as the base case, so an ordinary soldier could fight, travel, heal, etc. in a manner approximating real life unless assisted by magic or advanced technology.  &lt;br /&gt;&lt;br /&gt;Imposing realistic times for travel and healing worked in the pen-and-paper game since all the players typically formed a single "party", and the referee could arbitrarily move the time-line ahead to skip weeks of boring travel or healing.  This flexibility matched that which naturally happened in the opposite direction, where a few minutes of simulated combat time often took hours of real time to resolve.  This freedom to manipulate the time-line was retained when RPGs were first moved onto computers.  Many single player computer RPGs are still turn-based, and allow the player (sometimes controlling an entire party) to stop time while providing orders to each character.  Again a few minutes of simulated combat can take longer to resolve (though computerization makes fast resolution much easier).  And many games still allow time to be sped up during travel or healing.&lt;br /&gt;&lt;br /&gt;Unfortunately this flexibility disappears with massively-multiplayer online RPGs.  These provide the same persistent world model for all the players, so the time-line must move forward at  the same fixed rate for everyone.  A "realistic" mechanic for healing or travel would impose an unacceptable level of boredom on the players.  Instead these games allow characters (even without specialized magical or technological assistance) to quickly heal and travel long distances between encounters.&lt;br /&gt;&lt;br /&gt;This common mechanic from online RPGs is currently filtering back into the newest revisions of classic paper-and-pencil RPGs.  The "old school gamers" are understandably concerned and confused.  They don't see the need, since the referee is always free to speed up the time-line.  And those from a simulation (especially miniatures) background don't like the loss of realism.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-817023787456659304?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/817023787456659304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=817023787456659304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/817023787456659304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/817023787456659304'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/03/game-time.html' title='Game Time'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6916579614638073168</id><published>2010-02-15T23:04:00.000-08:00</published><updated>2010-02-15T23:58:56.088-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='simulation games'/><title type='text'>Conflicting World Models in Conflict Simulation</title><content type='html'>Many board games have been created to simulate past military conflicts.  They are often created to explore "what ifs", alternative choices the opposing commanders hypothetically could have made at the time.  A basic problem, of course, is that we have hindsight knowledge (though sometimes still incomplete) of what actually happened.&lt;br /&gt;&lt;br /&gt;To simulate "fog of war" games sometimes hide the positions or strengths of opposing troops.  More rarely the strengths of untested "green" troops are even hidden from their own commanders.  Elaborate scenario start conditions also try to recreate the historical limitations faced by commanders at the time:  troops hopelessly out of position or delayed due to political restrictions, surprise, disrupted communications, etc.&lt;br /&gt;&lt;br /&gt;What these games rarely represent, however, is that commanders sometimes start with fundamentally different understandings of "basic game mechanics", such as  the effects of mapboard terrain on movement, supply, and combat.  Many historical battles have hinged on one side believing certain terrain was impassible by many unit types.  The classic gaming example is the Ardennes forest at the beginning of both WW I and II.  A "historically correct" gameboard for the French would show it impassible to mechanized units, while the German gameboard would show it passable.  Since the "after the fact" map has the terrain passable, the French player will of course want to defend it accordingly.  Thus the elaborate setup-rules necessary to prevent this and ensure at least the possibility of achieving the historical outcome.  But here the most important element of surprise, that of one commander suddenly discovering his world-model is incorrect, is lost.&lt;br /&gt;&lt;br /&gt;This limitation becomes more acute the further players try to maneuver beyond the historical outcome.  Since these alternative paths were (figuratively and literally) never explored, we have little idea where their differing world models would have broken down in conflict with reality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6916579614638073168?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6916579614638073168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6916579614638073168' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6916579614638073168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6916579614638073168'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/02/conflicting-world-models-in-conflict.html' title='Conflicting World Models in Conflict Simulation'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7732226039626188282</id><published>2010-02-15T22:32:00.000-08:00</published><updated>2010-02-15T23:02:09.310-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>The Future of Amplification</title><content type='html'>Recently there have been several positive reviews of the &lt;a href="http://nadelectronics.com/products/masters-series/M2-Direct-Digital-Amplifier"&gt;NAD M2 Direct Digital Amplifier&lt;/a&gt;  (&lt;a href="http://nadelectronics.com/img/datasheets/M2-white-paper-EU-Web.pdf"&gt;white paper&lt;/a&gt;).  It is the first of its kind, and I expect many more amplifiers like this will follow.&lt;br /&gt;&lt;br /&gt;Today most audio sources are digital: CD/SACD, DVD/Blu-Ray, HDTV, PC/MP3 server, etc.  These signals are passed through a digital-to-analog converter, have volume control applied, and are passed as analog signals to the amplification stage.  Even current class D amplifiers accept an analog signal, convert it to a PWM (pulse width modulation) digital signal, and use that to generate the final amplified analog signal sent to the speakers.&lt;br /&gt;&lt;br /&gt;The NAD M2 is unique in keeping the input digital signals in the digital domain as long as possible.  It accepts PCM (pulse code modulation) digital inputs, applies volume control digitally, and converts the PCM to PWM for output by the class D amplifier.  Keeping the signal digital as long as possible eliminates all the possible noise sources in the redundant digital-to-analog-to-digital conversions,  and the lossy analog connections between source, pre-amplifier and power amplifier.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;(Yes, I deleted my previous audio post as I realized I was spreading disinformation.  I am currently fascinated by the topic, and will keep trying.)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7732226039626188282?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7732226039626188282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7732226039626188282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7732226039626188282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7732226039626188282'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/02/future-of-amplification.html' title='The Future of Amplification'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2664198296763440211</id><published>2010-01-24T11:51:00.000-08:00</published><updated>2010-02-24T23:28:36.538-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Cycles of Explanation in Economics</title><content type='html'>In areas of science such as physics and biology our successive theories developed over time are better and better explanations of the observed facts.  Think heliocentrism versus geocentrism, or natural selection versus Lamarckism.  But in economics I suspect this is not always the case.  Traumatic events like the Great Depression, or (hopefully) the current crisis  can force a brief period of clarity.  But over time economic forces will result in the mainstream replacement of the theory which most closely matches the observed facts of the previous crisis with a theory which maximizes short term profits for powerful actors.  The time-frame over which this shift occurs is probably a generation, in which those with first-hand memories of the previous crisis leave power.&lt;br /&gt;&lt;br /&gt;Here are two exhibits for my point.  The first is a quote I have been re-sending for years:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"When business in the United States underwent a mild contraction in 1927, the Federal Reserve created more paper reserves in the hope of forestalling any possible bank reserve shortage. More disastrous, however, was the Federal Reserve's attempt to assist Great Britain who had been losing gold to us because the Bank of England refused to allow interest rates to rise when market forces dictated (it was politically unpalatable). The reasoning of the authorities involved was as follows: if the Federal Reserve pumped excessive paper reserves into American banks, interest rates in the United States would fall to a level comparable with those in Great Britain; this would act to stop Britain's gold loss and avoid the political embarrassment of having to raise interest rates.&lt;br /&gt;&lt;br /&gt;The "Fed" succeeded; it stopped the gold loss, but it nearly destroyed the economies of the world in the process. The excess credit which the Fed pumped into the economy spilled over into the stock market -- triggering a fantastic speculative boom. Belatedly, Federal Reserve officials attempted to sop up the excess reserves and finally succeeded in braking the boom. But it was too late: by 1929 the speculative imbalances had become so overwhelming that the attempt precipitated a sharp retrenching and a consequent demoralizing of business confidence. As a result, the American economy collapsed. Great Britain fared even worse, and rather than absorb the full consequences of her previous folly, she abandoned the gold standard completely in 1931, tearing asunder what remained of the fabric of confidence and inducing a world-wide series of bank failures. The world economies plunged into the Great Depression of the 1930's."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.usagold.com/gildedopinion/greenspan.html"&gt;Gold and Economic Freedom&lt;/a&gt;, Alan Greenspan, 1967.&lt;br /&gt;&lt;br /&gt;Here the Greenspan of 1967 believed holding Fed rates too low caused a bubble that could not be cleaned up afterwards.  But the Greenspan of the late 1990s and again early 2000s no longer believed low rates caused bubbles, or that a bubble could be too large for the Fed to clean up afterwards.  Why the shift?  I think the earlier theory fits the facts of the 1920-30s (and our current situation now) better.  But note his successor Ben Bernanke &lt;b&gt;still&lt;/b&gt; denies low rates cause bubbles.&lt;br /&gt;&lt;br /&gt;A second exhibit is the presentation I wrote in 2006 and posted as &lt;a href="http://proliferationofniches.blogspot.com/2008/04/black-swans-in-market.html"&gt;Black Swans in the Market&lt;/a&gt; in 2008.  I showed that any Statistics 101 student could easily demonstrate that daily stock prices changes are not normally distributed.  This makes people like the CFO of Goldman Sachs, who claimed in 2007 "We were seeing things that were 25-standard-deviation events, several days in a row" look extra-silly.  Why were they using such bad models?  Is finance in general so ignorant of basic statistics[*]?  No, they are simply choosing models which maximize their short-term profits -- and bonuses.&lt;br /&gt;&lt;br /&gt;[*] OTOH, a Google Books search on "which shows a histogram of the daily returns on Microsoft stock" shows that as of 2005 Brealey et. al. were still peddling this nonsense to unsuspecting MBA students in their &lt;b&gt;Principles of Corporate Finance&lt;/b&gt; and related texts.  A 2005 edition apparently shifted the MSFT date range from 1986-97 to 1990-2001 (omitting the crash of 1987!).  Later editions don't hit on the search terms; no idea if they have cleaned up their act.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2664198296763440211?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2664198296763440211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2664198296763440211' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2664198296763440211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2664198296763440211'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/01/cycles-of-explanation-in-economics.html' title='Cycles of Explanation in Economics'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5794414066941645219</id><published>2010-01-03T01:48:00.000-08:00</published><updated>2010-01-03T13:48:06.626-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><title type='text'>Multi-Core Ant Colony Optimization for TSP in Go</title><content type='html'>&lt;a href="http://golang.org/"&gt;Go&lt;/a&gt; is a new statically typed, garbage collected, concurrent programming language.  It is native compiled and offers near-C performance.  Like Erlang it uses a CSP model of lightweight processes ("goroutines") communicating via message passing.  Messages can be synchronous (unbuffered) or asynchronous.  Go supports multi-core processors.&lt;br /&gt;&lt;br /&gt;On my usual ACO TSP test case Go is the best performing language so far.  On a single core it was 2.8x slower than C, beating the previous best &lt;a href="http://proliferationofniches.blogspot.com/2008/07/shedskin-python.html"&gt;Shedskin Python&lt;/a&gt;.  Go's speedup from 1 to 2 cores was 1.9, matching previous best Erlang.  With 4 cores Go exceeds C's single core performance -- the first tested language to achieve this &lt;a href="http://proliferationofniches.blogspot.com/2008/07/multi-core-problem.html"&gt;goal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;iframe width='500' height='360' frameborder='0' src='http://spreadsheets.google.com/pub?key=tazT_k72Nf6V6hyqRSF6mFA&amp;single=true&amp;gid=0&amp;output=html&amp;widget=true'&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Go's lightweight processes are scheduled onto OS threads by the Go runtime system.  This allows the system to support many more processes.  I was able to run ACO TSP with 100,000 ant processes.  The runtime system scheduler appears to treat these processes somewhat like futures, lazily scheduling them when another process is blocking on receipt of a message from a shared channel.  This is inefficient for the type of parallel processing used in ACO (many seconds of parallel computation ending with a single message send), as only a single process (and thus a single core) is active at a time.  This is a known issue, and the simple solution suggested on the &lt;a href="http://groups.google.com/group/golang-nuts"&gt;golang-nuts mailing list&lt;/a&gt; is to add &lt;b&gt;runtime.Gosched()&lt;/b&gt; calls to yield the processor.  For my case this was insufficient, and adding additional heartbeat messages to each process helped force maximal multi-core usage.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://eric_rollins.home.mindspring.com/goAnt.html"&gt;here&lt;/a&gt; for code and more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5794414066941645219?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5794414066941645219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5794414066941645219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5794414066941645219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5794414066941645219'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2010/01/multi-core-ant-colony-optimization-for.html' title='Multi-Core Ant Colony Optimization for TSP in Go'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8700059858583349460</id><published>2009-12-20T12:38:00.000-08:00</published><updated>2009-12-20T13:29:31.717-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Science Fiction Physics, and Biology</title><content type='html'>The January 2010 &lt;b&gt;Scientific American&lt;/b&gt; article &lt;a href="http://www.scientificamerican.com/article.cfm?id=looking-for-life-in-the-multiverse"&gt;"Looking for Life in the Multiverse"&lt;/a&gt; analyzes how much the laws of physics might differ while some form of life is still possible.  It specifically shows that carbon-based life is still possible when the &lt;a href="http://en.wikipedia.org/wiki/Weak_interaction"&gt;weak nuclear force&lt;/a&gt; is eliminated.  The authors are less supportive of &lt;a href="http://en.wikipedia.org/wiki/Hypothetical_types_of_biochemistry"&gt;non-carbon-based life&lt;/a&gt; popular in science fiction, and still find support for the &lt;a href="http://en.wikipedia.org/wiki/Anthropic_principle"&gt;anthropic principle&lt;/a&gt; ("conditions that are observed in the universe must allow the observer to exist") in the precise value required for the &lt;a href="http://en.wikipedia.org/wiki/Cosmological_constant"&gt;cosmological constant&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, in an earlier &lt;a href="http://proliferationofniches.blogspot.com/2009/12/fish-balance-of-hobbiton.html"&gt;post&lt;/a&gt; I claimed that all life on earth is dependent on the sun for energy.  This is incorrect.  The &lt;a href="http://en.wikipedia.org/wiki/Black_smoker"&gt;black smoker&lt;/a&gt; sea vents on the ocean floor support complete ecosystems including &lt;a href="http://en.wikipedia.org/wiki/Archaea"&gt;archaea&lt;/a&gt;, clams, and tubeworms.  Here the energy comes from the interior of the earth instead of the sun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8700059858583349460?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8700059858583349460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8700059858583349460' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8700059858583349460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8700059858583349460'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/12/science-fiction-physics-and-biology.html' title='Science Fiction Physics, and Biology'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-3831142234769744014</id><published>2009-12-14T23:01:00.000-08:00</published><updated>2009-12-22T13:05:36.044-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Science Fiction Morality</title><content type='html'>In an &lt;a href="http://proliferationofniches.blogspot.com/2009/10/whats-really-wrong-with-ayn-rand.html"&gt;earlier post&lt;/a&gt; I questioned the existence of atheist essentialist philosophers.  I had been looking in the area of Philosophy of Science.  Turns out a better place to look is Moral Philosophy.  Moral Philosophy presents a moral spectrum, from &lt;a href="http://en.wikipedia.org/wiki/Moral_nihilism"&gt;Moral Nihilism&lt;/a&gt; (nothing is moral or immoral), to &lt;a href="http://en.wikipedia.org/wiki/Moral_relativism"&gt;Moral Relativism&lt;/a&gt; (morals are relative to individual, social, cultural, or historic circumstances), to &lt;a href="http://en.wikipedia.org/wiki/Moral_universalism"&gt;Moral Universalism&lt;/a&gt; (applies to "all similarly situated individuals") to &lt;a href="http://en.wikipedia.org/wiki/Moral_realism"&gt;Moral Realism&lt;/a&gt; (moral statements can be objectively true, and subject to rules of logic).  In Moral Realism moral rules are similar to Platonic Forms or Ideals.  Moral Realism is often grounded in religion, but is also supported by some atheist philosophers (example:  &lt;a href="http://en.wikipedia.org/wiki/Quentin_Smith"&gt;Quentin Smith&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The boundaries between the positions are often fuzzy, with various proponents subtly repositioning other prominent philosophers.  A historical stumbling block has been determining how a Universal Morality can be possible without recourse to a deity (and this is the basis of the &lt;a href="http://en.wikipedia.org/wiki/Argument_from_morality"&gt;"argument from morality"&lt;/a&gt;, a proof of God's existence).    More recently, based on research in Evolutionary Psychology, Steven Pinker wrote a great &lt;a href="http://www.nytimes.com/2008/01/13/magazine/13Psychology-t.html?_r=4&amp;oref=slogin&amp;pagewanted=print"&gt;essay&lt;/a&gt; on how a human moral sense or instinct may have evolved.  He presents many rules which are specific to the evolved nature of humans, and some which may be more universal.  He says:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Two features of reality point any rational, self-preserving social agent in a moral direction. And they could provide a benchmark for determining when the judgments of our moral sense are aligned with morality itself...  One is the prevalence of nonzero-sum games. In many arenas of life, two parties are objectively better off if they both act in a nonselfish way than if each of them acts selfishly... The other external support for morality is a feature of rationality itself: that it cannot depend on the egocentric vantage point of the reasoner..."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is interesting to consider how many rules the Moral Realist propose are universal, versus specific to the evolved nature of humans.  I wonder how much science fiction Moral Realists read.  A common theme in science fiction is the presentation of different alien races, and the different moral imperatives which naturally arise from their different evolutionary heritage.  Examples are the &lt;a href="http://traveller.wikia.com/wiki/K%27kree"&gt;K'kree&lt;/a&gt; (herbivores) and &lt;a href="http://traveller.wikia.com/wiki/Hiver"&gt;Hivers&lt;/a&gt; (one sex) from Traveller.  And aside from other planets, we can similarly consider how morals would differ if radically different earth species (sharks?  praying mantis? naked mole rats?) had evolved sentience.  The Moral Realists imply that all creatures, regardless of evolutionary heritage, will always converge on the same universal morality (or that creatures which are unable to meet the standard can't achieve sentience).  This may be a realistic assumption for a few of the meta-universals proposed by Pinker, but I don't think it applies to the much larger set of rules proposed by the Moral Realists.  And without this universality the attempt to use rules of logic falls apart.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-3831142234769744014?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/3831142234769744014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=3831142234769744014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3831142234769744014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3831142234769744014'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/12/science-fiction-morality.html' title='Science Fiction Morality'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6822374600186892203</id><published>2009-12-06T02:36:00.000-08:00</published><updated>2009-12-06T10:23:00.031-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>The Fish Balance of Hobbiton</title><content type='html'>Like everyone else I've been trying to make sense of the arguments between the Keynesians, Austrians, etc. over the financial crisis.  Lately I've been trying to puzzle out the National Financial Balance Accounting Identity:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Household FB + Business FB + Government FB + Foreign FB = 0&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Described &lt;a href="http://www.nakedcapitalism.com/2009/10/debate-on-deficits-a-reply-from-rob-parenteau.html"&gt;here&lt;/a&gt;.  The importance of this equation is its use in justifying government deficits:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"We’ve said it before and we’ll say it again. As a matter of national accounting, the domestic private sector cannot increase savings unless and until foreign or government sectors increase deficits. Call this the tyranny of double entry bookkeeping: the government’s deficit equals by identity the non-government’s surplus."&lt;/i&gt; &lt;a href="http://www.creditwritedowns.com/2009/09/the-g20-summit-hijacked-by-neo-liberalism.html"&gt;Marshall Auerback&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the first linked article, some definitions:&lt;br /&gt;&lt;br /&gt;Financial Balance FB = income - expenditures, or saving - investment&lt;br /&gt;income = profits + wages = P + W&lt;br /&gt;spending = investment + consumption = I + C&lt;br /&gt;normally (when FB=0) total income = total spending, so P +W = I + C&lt;br /&gt;&lt;br /&gt;In discussing households we simplify by assuming no profits, so P=0&lt;br /&gt;&lt;br /&gt;savings = W - C&lt;br /&gt;FB = (W - C) - I&lt;br /&gt;&lt;br /&gt;The author of the first linked article criticized an earlier author who claimed it was possible for all sectors Financial Balance to be simultaneously positive, so the Accounting Identity would not have to sum to zero.  He claimed this would only be true in a primitive barter-based "Hobbit Shire".&lt;br /&gt;&lt;br /&gt;Let's build one.  Assume our world economy only consists of Hobbit households.  No businesses, no government, no foreigners, no money, no outside investment.  One primary resource:  deep sea fish.  Household "Wages" are the daily catch of fish. "Consumption" is eating fish.  "Savings" is storing fish in the snow (Eskimo Hobbits :-) for later.  So in good times (summer?) the net FB "&lt;b&gt;Fish&lt;/b&gt; Balance" of all the Hobbit households is positive, while in bad times (winter?) the FB can be negative.  This doesn't match the original Accounting Identity, but we can make it sum to zero by adding a new often-negative "Natural Resources" term to the equation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Hobbit Household FB + Natural Resource FB = 0&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This forms an interesting analogy to arguments against evolution based on the &lt;a href="http://en.wikipedia.org/wiki/Second_law_of_thermodynamics"&gt;Second Law of Thermodynamics&lt;/a&gt;.  Life on earth is not a closed system.  It depends on a constant supply of energy from an outside source -- the sun.  Life on earth is also dependent on heavier elements produced in prior supernovas.  Similarly human economics is dependent on many raw material inputs which are not initially generated by (or often even owned by) humans.  For the above Hobbit example I chose deep sea fish as a renewable resource owned by no-one.  Other renewable resources include timber, food crops, textile crops, livestock, etc.  Non-renewable resources include oil and minerals.  Think &lt;a href="http://www.boardgamegeek.com/boardgame/71"&gt;AH Civilization&lt;/a&gt;  or &lt;a href="http://www.boardgamegeek.com/boardgame/13"&gt;Settlers of Catan&lt;/a&gt;.  And note these raw materials also ultimately come from the sun or supernovas.&lt;br /&gt;&lt;br /&gt;This introduces the question of why the real Accounting Identity doesn't include a Natural Resources term.  Obviously the real one is about money, not about resources.  But if gathering natural resources creates value within the system, shouldn't it be represented?  It is also not clear how many other aspects of value creation (such as a household purchasing an income-generating asset, rather than investing in the business sector) are represented.&lt;br /&gt;&lt;br /&gt;This also brings up how new money is injected into the system.  If the currency were gold-backed, money would be a resource.  But a &lt;a href="http://en.wikipedia.org/wiki/Fiat_money"&gt;fiat currency&lt;/a&gt; is created by central banks.  I assume the government deficit spending advocated in the quote above is fiscal spending, and the Government FB is budgetary spending.  Alternately could they be advocating monetary stimulus, and the Government FB is that of the Federal Reserve?  Does inflation matter in the equation, or is it irrelevant?&lt;br /&gt;&lt;br /&gt;I think some of these questions are at the heart of the debates between the Keynesians and the Austrians.  The Austrians focus on productive versus wasteful uses of resources, like my Hobbiton Fish Balance (to the extent they recognize the Financial Balance version they see it as an argument for returning to the resource-based gold standard). The Austrians claim recessons are caused by misallocation of resources.   Keynesians are more focused on the flow (especially velocity) of money inside the Financial Balance Accounting Identity.  Some claim our current problems are due to government not carrying out its proper role: running deficits.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6822374600186892203?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6822374600186892203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6822374600186892203' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6822374600186892203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6822374600186892203'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/12/fish-balance-of-hobbiton.html' title='The Fish Balance of Hobbiton'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-3227456521587057104</id><published>2009-10-31T18:19:00.000-07:00</published><updated>2009-11-01T23:38:55.787-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><title type='text'>What's really wrong with Ayn Rand</title><content type='html'>Ayn Rand was the author of the novels &lt;b&gt;The Fountainhead&lt;/b&gt; and &lt;b&gt;Atlas Shrugged&lt;/b&gt; and the founder of the philosophy of &lt;a href="http://en.wikipedia.org/wiki/Objectivism_(Ayn_Rand)"&gt;Objectivism&lt;/a&gt;.  Recently &lt;a href="http://www.gq.com/entertainment/books/200911/ayn-rand-dick-books-fountainhead"&gt;several&lt;/a&gt; &lt;a href="http://coyotebanjo.blogspot.com/2009/07/adolescent-essentialism.html"&gt;humorous&lt;/a&gt; articles have made fun of adolescent enthusiasm for Rand, and pointed out the real dangers of retaining this enthusiasm into adulthood [see &lt;a href="http://www.pbs.org/wgbh/pages/frontline/warning/themes/greenspan.html"&gt;Alan Greenspan&lt;/a&gt;].  But critics often miss the fundamental flaw in Objectivism: the attempt to combine &lt;a href="http://en.wikipedia.org/wiki/Essentialism"&gt;essentialism&lt;/a&gt; with atheism.  Rand claimed her favorite philosophers were Aristotle and Saint Thomas Aquinas, both of whom placed God at the core of their essentialist philosophies.  Rand also wanted to be an essentialist, to help her derive axiomatic proofs of her absolutist moral and economic theories.  Essentialism (and the related ideas of universals and Platonic forms) was strongly criticized by more recent scientifically-minded philosophers such as Hume, Popper,  and Quine.  Rand has never gotten much respect in academic philosophy, and I am unable to find an academically respected philosopher who is both an atheist and an essentialist.  I suspect the combination just doesn't work.&lt;br /&gt;&lt;br /&gt;As implied in the linked articles, this combination of essentialism and atheism is probably also key to Rand's appeal to a very specific type of adolescent: one who has recently left their absolutist religious faith behind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-3227456521587057104?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/3227456521587057104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=3227456521587057104' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3227456521587057104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3227456521587057104'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/10/whats-really-wrong-with-ayn-rand.html' title='What&apos;s really wrong with Ayn Rand'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4284467078471614986</id><published>2009-10-06T07:24:00.000-07:00</published><updated>2009-10-31T18:17:39.677-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Dawkins on Essentialism</title><content type='html'>&lt;span style="font-style:italic;"&gt;For the mind encased in Platonic blinkers, a rabbit is a rabbit is a rabbit.  To suggest that rabbitkind constitutes a kind of shifting cloud of statistical averages, or that today's typical rabbit might be different from the typical rabbit of a million years ago or the typical rabbit of a million years hence, seems to violate an internal taboo.  Indeed, psychologists studying the development of language tell us that children are natural essentialists.  Maybe they have to be if they are to remain sane while their developing minds divide things into discrete categories each entitled to a unique noun.  It is no wonder that Adam's first task, in the Genesis myth, was to give all the animals names.&lt;br /&gt;&lt;br /&gt;And it is no wonder, in Mayr's view, that we humans had to wait for our Darwin until well into the nineteenth century.  To dramatize how very anti-essentialist evolution is, consider the following.  On the 'population-thinking' evolutionary view, every animal is linked to every other animal, say rabbit to leopard, by a chain of intermediates, each so similar to the next that every link could in principle mate with its neighbors in the chain and produce fertile offspring.  You can't violate the essentialist taboo more comprehensively than that.  And this is not some vague thought experiment confined to the imagination.  On the evolutionary view, there really is a series of intermediate animals connecting a rabbit to a leopard, every one of whom lived and breathed, every one of whom would have been placed in exactly the same species as its immediate neighbors on either side in the long, sliding continuum.  Indeed, every one  of the series was the child of its neighbor on one side and the parent of its neighbor on the other...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Richard Dawkins, &lt;span style="font-weight:bold;"&gt;The Greatest Show on Earth:  The Evidence for Evolution&lt;/span&gt;, p. 23-24.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4284467078471614986?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4284467078471614986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4284467078471614986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4284467078471614986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4284467078471614986'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/10/dawkins-on-essentialism.html' title='Dawkins on Essentialism'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-3960203291934650504</id><published>2009-09-06T14:25:00.000-07:00</published><updated>2009-09-06T22:37:34.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>More Shedskin Python</title><content type='html'>&lt;a href="http://proliferationofniches.blogspot.com/2008/07/shedskin-python.html"&gt;Previously&lt;/a&gt; I discussed Shedskin Python, a Python compiler I used on my ACO TSP test program.  My &lt;b&gt;ant.py&lt;/b&gt; test program is now being included as one of the example programs with Shedskin.&lt;br /&gt;&lt;br /&gt;The earlier discussed version of Shedskin used intermediate templated C++ code to support the parametric polymorphism (generic functions) inherent in dynamically typed Python programs.  In the most recent versions this templating has been dropped, as it was found to be complex to maintain and rarely useful.  So my &lt;b&gt;palindrome&lt;/b&gt; examples no longer compile.&lt;br /&gt;&lt;br /&gt;In testing &lt;b&gt;ant.py&lt;/b&gt; could also be sped up by 1.5x with the following shedskin flags:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; -b --nobounds          Disable bounds checking&lt;br /&gt; -r --random            Use fast random number generator &lt;br /&gt; -w --nowrap            Disable wrap-around checking &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-3960203291934650504?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/3960203291934650504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=3960203291934650504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3960203291934650504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3960203291934650504'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/09/more-shedskin-python.html' title='More Shedskin Python'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8987129525635840681</id><published>2009-08-09T20:42:00.000-07:00</published><updated>2009-08-11T23:54:57.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backpacking'/><title type='text'>Backpacking Gear Test</title><content type='html'>&lt;a href="http://picasaweb.google.com/lh/photo/5teoe4FeVWyey28NKuc2vg?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_lJDNOwOlWxI/Sn-YaYmwVEI/AAAAAAAAAjg/UlDC8f_FIPM/s288/2009-08-09%2012.26.38.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After hauling my camping gear to the airport for &lt;a href="http://ragbrai.com/"&gt;RAGBRAI&lt;/a&gt;, at the magazine stand I noticed the cover of the latest issue of &lt;b&gt;Backpacker&lt;/b&gt;: &lt;i&gt;"Your Lightest Load Ever!"&lt;/i&gt;  Intrigued, I read all about &lt;a href="http://en.wikipedia.org/wiki/Ultralight_backpacking"&gt;Ultralight Backpacking&lt;/a&gt; and the newest lightweight tech.  Then I started shopping.  I ended up backing off from ultralight, and now could be classified as &lt;i&gt;lightweight+&lt;/i&gt;:  23 lbs base weight (without food, water, fuel).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://spreadsheets.google.com/pub?key=tiMkKL-GXXRrY-4KXsh3B1w&amp;output=html"&gt;Gear Weights (spreadsheet)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All listed weights measured myself with a Cuisinart kitchen scale.&lt;br /&gt;&lt;br /&gt;I took all the listed gear to &lt;a href="http://www.nps.gov/pinn/"&gt;Pinnacles National Monument&lt;/a&gt; as a test.  One night in the campground, day hikes to the Bear Gulch (2.4 miles) and Balconies (5.4 miles) caves, plus 2 miles with full pack.  Impressions follow.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.thenorthface.com/webapp/wcs/stores/servlet/ProductDisplay?productId=70162&amp;storeId=207&amp;catalogId=10201&amp;langId=-1&amp;from=subCat&amp;parent_category_rn=24452&amp;variationId=7K5"&gt;North Face El Lobo 65 Pack&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/8u8EIZEuPjJ2LdDzKxF66Q?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_lJDNOwOlWxI/Sn-X44RlKQI/AAAAAAAAAjY/FSuiW6OD8U4/s288/2009-08-09%2013.43.23.jpg" /&gt;&lt;/a&gt;&lt;a href="http://picasaweb.google.com/lh/photo/2TErbbKXFSyurhAqCKXaIQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/Sn-YJZNi3TI/AAAAAAAAAjc/zxrDyry_yiA/s288/2009-08-09%2013.42.43.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was the one non-"ultralight" purchase.  I considered several other recommended ultralight packs, including the North Face "Flight" series &lt;a href="http://www.thenorthface.com/webapp/wcs/stores/servlet/ProductDisplay?productId=70170&amp;storeId=207&amp;catalogId=10201&amp;langId=-1&amp;from=subCat&amp;parent_category_rn=24452&amp;variationId=841"&gt;Skareb 65&lt;/a&gt;, but wasn't able to convince myself of their durability or gear hauling ability (assuming I didn't commit to ultralight for everything else).  The El Lobo has some useful features over the Skareb, including a separate sleeping bag compartment and a detachable lid converting to a padded fanny pack.  I used the lid pack to carry two 0.7 L water bottles plus food and flashlight for the day hikes.   According to spec the El Lobo (at 4 lb 4 oz) was only supposed to be 8 oz heavier than the Skareb (at 3 lb 12 oz).  However, my scale shows the El Lobo at 5 lb 6 oz -- over a lb above spec.&lt;br /&gt;&lt;br /&gt;In the field the pack worked fine.  Held all my (new) stuff, comfortable on the trail.  Built-in hydration compartment (common in new packs) is great for hiking, though an internal leak would be very messy.  Katadyn water filter (tested at home, not on trip) does provide quick-connect fittings for the drinking hose so the reservoir doesn't have to be opened or removed to refill.  Hopefully this will reduce the odds of mishap.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.rei.com/product/779217"&gt;Sierra Designs Vapor Light 2 XL Tent&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This tent replaces my 1990 North Face Coriolis 2-person tent (7 lbs with footprint).  The Vapor Light saves over 2 lbs, while still being a 2 person tent -- so far I find one-person tents too claustrophobic (plus I like keeping my pack inside).  I do expect the Vapor Light to be less durable; I would rather have the North Face in an &lt;a href="http://ragbrai.com/index.php/2009/07/21/the-twister-and-the-tent/"&gt;Iowa Tornado&lt;/a&gt;.   The stakes it came with (middle) are a joke:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/DsEcw36UZyCp-Tv-5tjszQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/Sn-ZW4oU6DI/AAAAAAAAAjo/5aiaO_U-IoU/s288/2009-08-09%2020.50.01.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I replaced them with REI stakes (top) similar to those provided by North Face with my old tent.&lt;br /&gt;&lt;br /&gt;I went with the REI-exclusive XL model (93" long, instead of 83" in the non-XL) so it could fit my old long sleeping bag (86").  My old tent was 90" long.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.thenorthface.com/webapp/wcs/stores/servlet/ProductDisplay?productId=10511&amp;storeId=207&amp;catalogId=10201&amp;langId=-1&amp;from=subCat&amp;parent_category_rn=11749&amp;variationId=60U"&gt;North Face Orion Sleeping Bag (20 deg, synthetic, regular length)&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This bag replaces my 1990 North Face Cats Meow (20 deg, synthetic, long length) bag (3 lb 11 oz), saving 1 lb 4 oz.  More importantly, the new bag fits in the sleeping bag compartment of the El Lobo pack, and leaves enough room that the hydration pack can be used without the new tent being carried outside the pack.  Yes, down could have been even smaller and lighter.  I don't want to worry about a wet bag.  I decided to go with regular length since most ultralight one-person tents can't hold a long bag.  Trying it in the store, regular bags do hold a six-foot person -- if they are sleeping on their back like a mummy.&lt;br /&gt;&lt;br /&gt;In testing, I found this doesn't really work for side-sleepers.  You get a cold draft over the shoulder, since you can't scoot down to cover unless your legs are bent.  I also experimented with the head-cinch cord, which I normally never use (again too claustrophobic).  My old North Face bag had a rope cord, and a normal-sized squeeze-lock.  The Orion has an elastic cord, and a tiny squeeze lock which gives no feedback as to whether the tiny button is activated.  As a result I broke the elastic inside the hood while trying to open it during the night.  Frankly this worries me about North Face's "Flight" ultralight product line (including this Orion bag, and the Skareb pack I had considered).  With almost 20 years of North Face products (discussed above, plus a ski shell and down jacket) I've never managed to break anything until now.  Fortunately I don't use the head cinch anyway.  Looking at other bags at REI (including the current Cats Meow) they all use larger squeeze locks and many use ropes instead of elastic.  I only found the micro squeeze lock on some ultralight packs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.newbalance.com/products/MO1500/"&gt;New Balance 1500 Rainier Hiking Boot&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Replaces Vasque hiking boot.  Weights are basically the same: 3 lb/pair.  Benefit (over many other options) of these New Balance is that they actually come in B widths.  No  blisters in two days (moderate, hot) hiking.&lt;br /&gt;&lt;br /&gt;With a fully loaded pack weight of 30 lbs I didn't want to try just using low-cut trail shoes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://portal.trimbleoutdoors.com/default.aspx?tabId=347"&gt;Trimble Outdoors Android G1 Phone App&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This was a last-minute Android Market download/purchase, as I didn't want to add 5 oz for my old Garmin GPS (which also has a horrible menu interface, and doesn't support map downloads).  I haven't figured it all out yet.  I got waypoints for Pinnacles High Peaks Trail onto my GPhone, but didn't download a topo map.  &lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder='0' scrolling='no' style='width:420px; height:400px;' src='http://www.trimbleoutdoors.com/Maps/EmbeddedMap.aspx?tripId=486762&amp;w=420&amp;h=400'&gt;This site does not support embedded trip maps. View the trip &lt;a href='http://www.trimbleoutdoors.com/ViewTrip.aspx?tripId=486762&amp;utm_source=embedmap'&gt;here&lt;/a&gt; instead.&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;One hilarious part:  &lt;b&gt;Help&lt;/b&gt; requires web access.  Hope you're not too lost.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Next Steps&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Turns out my old steel MSR pots are now considered "expedition grade".  Ultralight titanium is apparently the new hotness...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8987129525635840681?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8987129525635840681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8987129525635840681' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8987129525635840681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8987129525635840681'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/08/backpacking-gear-test.html' title='Backpacking Gear Test'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_lJDNOwOlWxI/Sn-YaYmwVEI/AAAAAAAAAjg/UlDC8f_FIPM/s72-c/2009-08-09%2012.26.38.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7309464758363302543</id><published>2009-06-30T20:19:00.000-07:00</published><updated>2010-02-15T12:44:45.336-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='Language'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Pinker Again</title><content type='html'>In my previous post &lt;a href="http://proliferationofniches.blogspot.com/2009/06/sapir-whorf-revisited.html"&gt;Sapir-Whorf Revisited&lt;/a&gt; I cited Lakoff's theories on metaphor.  A much simpler critique of Pinker can be made, based only on Pinker.  He says&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"...the famous Sapir-Whorf hypothesis of linguistic determinism, stating that people's thoughts are determined by the categories made available by their language, and its weaker version, linguistic relativity, stating that differences among languages cause differences in the thoughts of their speakers"&lt;/span&gt;. (The Language Insinct, p. 57)&lt;br /&gt;&lt;br /&gt;Now simply substitute "culture" for "language":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"...the Revised S-W hypothesis of cultural determinism, stating that people's thoughts are determined by the categories made available by their culture, and its weaker version, cultural relativity, stating that differences among cultures cause differences in the thoughts of their members."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sound more reasonable?  Most of Pinker's critique in his chapter on "Mentalese" would not apply.  &lt;br /&gt;&lt;br /&gt;Mentalese also appears to have numerous flaws.  On a small scale, what is mentalese for our modern word 'telephone'?  On a larger scale, for 'cell doctrine'?  For 'plate techtonics'?  For 'Standard Social Science Model'?  For 'physical symbol system hypothesis / computational theory of mind'?  All of these concepts are uniquely made available to us by our culture.  They were not hard-wired by evolution.  They provide categories which determine (or at least cause differences in) our thoughts.&lt;br /&gt;&lt;br /&gt;I also doubt human cognition is based on &lt;a href="http://en.wikipedia.org/wiki/First-order_logic"&gt;Predicate Logic&lt;/a&gt;.  We aren't very good at it, and systems actually based on it normally fall apart on the first inconsistency encountered in the real-world (see Carl Hewitt's heroic attempts to fix this in &lt;a href="http://arxiv.org/abs/0812.4852v2"&gt;Common sense for concurrency and strong paraconsistency using unstratified inference and reflection&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7309464758363302543?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7309464758363302543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7309464758363302543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7309464758363302543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7309464758363302543'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/06/pinker-again.html' title='Pinker Again'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4732461731857184563</id><published>2009-06-28T09:13:00.000-07:00</published><updated>2010-02-15T12:44:33.598-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='Language'/><title type='text'>Sapir-Whorf Revisited</title><content type='html'>The &lt;a href="http://en.wikipedia.org/wiki/Linguistic_relativity"&gt;Sapir-Whorf Hypothesis&lt;/a&gt; asserts that categories in particular human languages influence or even control our possible thoughts.  You have most likely heard this presented in its most (in)famous example, about Eskimos having N different words for "snow".  I thought this version was well taken-apart by Steven Pinker in &lt;a href="http://www.amazon.com/Language-Instinct-Mind-Creates-P-S/dp/0061336467/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1246206212&amp;sr=8-1"&gt;The Language Instinct&lt;/a&gt;.  Recently an Edge essay &lt;a href="http://www.edge.org/3rd_culture/boroditsky09/boroditsky09_index.html"&gt;HOW DOES OUR LANGUAGE SHAPE THE WAY WE THINK?&lt;/a&gt; by Lera Boroditsky has made me reconsider.&lt;br /&gt;&lt;br /&gt;Using the terminology of Lakoff and Johnson's &lt;a href="http://www.amazon.com/Philosophy-Flesh-Embodied-Challenge-Western/dp/0465056741/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1246206565&amp;sr=1-1"&gt;Philosophy in the Flesh&lt;/a&gt;, Pinker's critique is classic first-generation Cognitive Science.  Pinker says the brain is the equivalent of a computer or Turing Machine, processing abstract symbols.  He asserts that thinking is done in "mentalese", not in a particular human language.  Translation to human language is the last step before speaking, so it cannot influence the core of thought.&lt;br /&gt;&lt;br /&gt;Lakoff and Johnson's second-generation Cognitive Science can be difficult to grasp, so I'll go slow.  It is a big idea, and since you can't see where I'm going, it is easy for me to get too far ahead for you to follow.  Simply stated:  thinking is largely based on metaphor, and abstract thinking is based on metaphorical analogy to bodily operations in the physical world.  Re-read the examples in the first two sentences:  "difficult to grasp", "go slow", "big ideas", "see where I'm going", "get too far ahead", "follow".  All of these are related to operations or relations in the physical world.  Their use in the realm of ideas is much more vague and abstract.  It is easy to agree on a measurement for the "bigness" of a tree, but how do you measure bigness for an idea?  Works such as Feldman's &lt;a href="http://www.amazon.com/Molecule-Metaphor-Neural-Language-Bradford/dp/0262562359/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1246208505&amp;sr=1-1"&gt;From Molecule to Metaphor&lt;/a&gt; show how evolution started with simple minds able to interact with the physical world, and placed increasing layers of abstraction on top.  But abstract thinking still bottoms out at the use of modules originally evolved for physical world manipulation.&lt;br /&gt;&lt;br /&gt;So how does this relate to language and Sapir-Whorf?  The studies cited by Boroditsky indicate different cultures use different physical-world metaphors for their abstract thinking:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"English speakers tend to talk about time using horizontal spatial metaphors (e.g., "The best is ahead of us," "The worst is behind us"), whereas Mandarin speakers have a vertical metaphor for time (e.g., the next month is the "down month" and the last month is the "up month")."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is plausible.  There is no inherent reason why time should be metaphorically mapped horizontally versus vertically.  It can easily be culturally determined rather than hard-wired into the brain.  And this puts an interesting new spin on Sapir-Whorf.  Thought is not determined by language, but instead both thought and language are determined by culturally transmitted, culturally specific abstract metaphorical mappings.  And how is culture transmitted?  Primarily through language.  So linguistic determinism or linguistic relativity is in a sense correct, but not for the reasons usually proposed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4732461731857184563?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4732461731857184563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4732461731857184563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4732461731857184563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4732461731857184563'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/06/sapir-whorf-revisited.html' title='Sapir-Whorf Revisited'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6556775743154744388</id><published>2009-03-27T20:34:00.000-07:00</published><updated>2009-06-28T09:14:05.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Language'/><title type='text'>Brain Scans, Machine Learning, and Trillion-word Web Text Corpus</title><content type='html'>&lt;span style="font-style:italic;"&gt;"The question of how the human brain represents conceptual knowledge has been debated in many scientific fields. Brain imaging studies have shown that different spatial patterns of neural activation are associated with thinking about different semantic categories of pictures and words (for example, tools, buildings, and animals). We present a computational model that predicts the functional magnetic resonance imaging (fMRI) neural activation associated with words for which fMRI data are not yet available. This model is trained via a combination of data from a trillion-word text corpus, and observed fMRI data associated with viewing several dozen concrete nouns. Once trained, the model predicts fMRI activation for thousands of other concrete nouns in the text corpus, with highly significant accuracies over the 60 nouns for which we currently have fMRI data."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cs.cmu.edu/%7Etom/science2008/index.html"&gt;Predicting Human Brain Activity Associated with the Meanings of Nouns&lt;/a&gt;, Tom M. Mitchell, Svetlana V. Shinkareva, Andrew Carlson, Kai-Min Chang, Vicente L. Malave, Robert A. Mason, Marcel Adam Just, &lt;b&gt;Science&lt;/b&gt;, 320, pp. 1191-1195, May 30, 2008.&lt;br /&gt;&lt;br /&gt;This research is the most interesting I have seen on the mapping of internal brain structure based on analysis of large bodies of text available from the web.  When generating machine-learned models from fMRI data, they found that for their tested set of concrete nouns the most accurate intermediate semantic features were sensory-motor verbs.  This matches with others theories of ideas being represented as the convergence of many related sensory patterns.  For instance, &lt;b&gt;apple&lt;/b&gt; as the convergence of the word "apple", redness, shiny, apple taste, apple texture, picking-by-hand, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6556775743154744388?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6556775743154744388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6556775743154744388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6556775743154744388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6556775743154744388'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/03/brain-scans-machine-learning-and.html' title='Brain Scans, Machine Learning, and Trillion-word Web Text Corpus'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-1905171062761432131</id><published>2009-02-16T19:23:00.000-08:00</published><updated>2009-02-16T19:31:05.067-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Make'/><title type='text'>Laser Sound</title><content type='html'>&lt;a href="http://picasaweb.google.com/lh/photo/QWKTtcLTfByAJcjq-hhPUw?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/SZok_OIM4FI/AAAAAAAAAdg/Sk7mF0uhXWQ/s288/DSC00800.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/LX3cVDJ1iLb1KVczw8Ijcg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/SZok-WBr4II/AAAAAAAAAdY/tRpXUQNJFVU/s288/DSC00799.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This project is based on the Make Controller I picked up at &lt;a href="http://proliferationofniches.blogspot.com/2007/05/maker-faire.html"&gt;Maker Faire&lt;/a&gt;.  It plays tones controlled by the interruption of laser beams.  The laser beams are from Laser Levels, and the MacBook software is implemented in the Processing environment.&lt;br /&gt;&lt;br /&gt;Details &lt;a href="http://eric_rollins.home.mindspring.com/LaserSound.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-1905171062761432131?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/1905171062761432131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=1905171062761432131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1905171062761432131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1905171062761432131'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/02/laser-sound.html' title='Laser Sound'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_lJDNOwOlWxI/SZok_OIM4FI/AAAAAAAAAdg/Sk7mF0uhXWQ/s72-c/DSC00800.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-450697790741838036</id><published>2009-01-18T22:07:00.000-08:00</published><updated>2009-01-18T22:20:17.340-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>CUDA GPGPU on MacBook Pro Laptop</title><content type='html'>I've ported my pthread generic and CUDA GPGPU &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;real-time ray tracers&lt;/a&gt; to Mac OS X running on a MacBook Pro laptop. It has a 2.4GHz Intel Core 2 Duo processor and a NVIDIA GeForce 9600M GT graphics processor. The Performance for 1 and 2 software threads is comparable to my older Linux desktop, and the CUDA is within a factor of 3 of the desktop graphics card.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Threads    Frames Per Second&lt;br /&gt;1           8.5&lt;br /&gt;2          17.4&lt;br /&gt;GPU        16.7&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-450697790741838036?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/450697790741838036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=450697790741838036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/450697790741838036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/450697790741838036'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/01/cuda-gpgpu-on-macbook-pro-laptop.html' title='CUDA GPGPU on MacBook Pro Laptop'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-3795366691920235900</id><published>2009-01-04T23:48:00.000-08:00</published><updated>2010-01-11T09:12:49.221-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>TxtView Application for Android</title><content type='html'>&lt;a href="http://picasaweb.google.com/lh/photo/-bIY7dFt8gUD6-5EGjXAoQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_lJDNOwOlWxI/SWG24leD17I/AAAAAAAAAcE/gcHeFiw3_4c/s288/TxtViewShot.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've written a simple &lt;a href="http://code.google.com/android/"&gt;Android&lt;/a&gt; application for viewing .txt files from &lt;a href="http://www.gutenberg.org/wiki/Main_Page"&gt;Project Gutenberg&lt;/a&gt;. It is still under development.&lt;br /&gt;&lt;br /&gt;APK and source available &lt;a href="http://home.mindspring.com/~eric_rollins/TxtView.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-3795366691920235900?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/3795366691920235900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=3795366691920235900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3795366691920235900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3795366691920235900'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2009/01/txtview-application-for-android.html' title='TxtView Application for Android'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_lJDNOwOlWxI/SWG24leD17I/AAAAAAAAAcE/gcHeFiw3_4c/s72-c/TxtViewShot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2790833139151039202</id><published>2008-11-17T20:27:00.000-08:00</published><updated>2008-11-17T22:15:23.200-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Three Key Concepts, and Their Application</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Occam's_razor"&gt;Occam's Razor&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;"the explanation of any phenomenon should make as few assumptions as possible, eliminating those that make no difference in the observable predictions of the explanatory hypothesis or theory"&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Falsifiability"&gt;Falsifiability&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;"the logical possibility that an assertion can be shown false by an observation or a physical experiment"&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Uniformitarianism_(science)"&gt;Uniformitarianism&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;"the assumption that the natural processes operating in the past are the same as those that can be observed operating in the present"&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;These three concepts form part of the bedrock of the Western scientific method.  When taken seriously, they help refute most supernatural claims.  Science asserts that physical law has been constant over the time frames of the evolution of life on Earth, the evolution of man, and the development of civilization.&lt;br /&gt;&lt;br /&gt;While we cannot travel into the past to directly witness historical events, we can examine evidence that has been (or should have been) left behind.  We can also closely examine contemporaries, in both our own and other cultures, making similar claims.  In the case of current supernatural claims, not one has held up to &lt;a href="http://en.wikipedia.org/wiki/James_Randi_Educational_Foundation#The_One_Million_Dollar_Paranormal_Challenge"&gt;scientific examination&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Psychology carefully avoids making judgments about the truth of supernatural claims, instead focusing the individuals  ability to function within their local social group.  In Western society today we still see individuals making supernatural claims very similar to those we read in ancient texts.  Sometimes they are recognized as mentally ill, but this does not stop others from believing and following them.  From this it is easy to assume ancient, pre-scientific peoples were even more credulous.&lt;br /&gt;&lt;br /&gt;This leaves one with several options on how to partition one's world-view.  One extreme is to assert that many contemporary supernatural claims, from many traditions, are all true.  A more moderate position is that the world was different two to four thousand years ago, and that supernatural claims from that time period were true.  Of course these positions are often subdivided where claims within one tradition are uniformly true while the others are false (or misguided interpretations of events actually powered by the one true source).&lt;br /&gt;&lt;br /&gt;The simplest Occam's-Razor explanation is to take a Uniformitarian position and assert that all supernatural claims for all time are purely based in psychology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2790833139151039202?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2790833139151039202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2790833139151039202' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2790833139151039202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2790833139151039202'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/11/three-key-concepts-and-their.html' title='Three Key Concepts, and Their Application'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-9049551251656749363</id><published>2008-10-28T23:02:00.001-07:00</published><updated>2009-01-26T23:20:53.279-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Galapagos</title><content type='html'>&lt;a href="http://picasaweb.google.com/lh/photo/VUCZwfGUSOgu56VFfHy2ZQ"&gt;&lt;img src="http://lh4.ggpht.com/proliferationofniches/SQf3gG7Yd4I/AAAAAAAAAS0/EhZ90B9LEKY/s288/galapagos%20263.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/oDPRxPpRJEqTSwn5awtjwA"&gt;&lt;img src="http://lh5.ggpht.com/proliferationofniches/SQf4R49-CzI/AAAAAAAAAU4/GE-h-jVVxqo/s288/galapagos%20460.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Ce0CBHk25LJqFidDJTUTcg"&gt;&lt;img src="http://lh4.ggpht.com/proliferationofniches/SQf3JubS6JI/AAAAAAAAASE/Q9JG-Lz9j3o/s288/galapagos%20187.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/KhKn1QGIdgYQvuiY8pVrVg"&gt;&lt;img src="http://lh3.ggpht.com/proliferationofniches/SQf4poxR_hI/AAAAAAAAAV0/aweAWyVXZE8/s288/galapagos%20601.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Cvi-5WVfSJDrISES-B13DQ"&gt;&lt;img src="http://lh5.ggpht.com/proliferationofniches/SQf5T8M-9vI/AAAAAAAAAXo/1Sy5ICHRaMA/s288/galapagos%20726.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/nLQjTlOPwOL72RFDUsmNcQ"&gt;&lt;img src="http://lh4.ggpht.com/proliferationofniches/SQf3qFcUhzI/AAAAAAAAATM/yzB9W_Bfa7s/s288/galapagos%20310.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/bcTeqNML3ukRmIVadlhuuQ"&gt;&lt;img src="http://lh3.ggpht.com/proliferationofniches/SQf4mbHO5VI/AAAAAAAAAVs/rR3j5Ceqa1Y/s288/galapagos%20578.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://picasaweb.google.com/proliferationofniches/GalapagosOctober2008"&gt;Galapagos October 2008&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-9049551251656749363?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/9049551251656749363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=9049551251656749363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/9049551251656749363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/9049551251656749363'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/10/galapagos.html' title='Galapagos'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/proliferationofniches/SQf3gG7Yd4I/AAAAAAAAAS0/EhZ90B9LEKY/s72-c/galapagos%20263.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4914317362790537125</id><published>2008-10-28T22:40:00.000-07:00</published><updated>2008-10-29T08:19:47.525-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Did the First Giraffe Have a Navel, Revisited</title><content type='html'>In an earlier &lt;a href="http://proliferationofniches.blogspot.com/2008/01/did-first-giraffe-have-navel.html"&gt;post&lt;/a&gt; I asked, "Did the First Giraffe Have a Navel?".  Turns out this is an old question:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;These authors seem no more startled at a miraculous act of creation than at an ordinary birth. But do they really believe that at innumerable periods in the earth's history certain elemental atoms have been commanded suddenly to flash into living tissues? Do they believe that at each supposed act of creation one individual or many were produced? Were all the infinitely numerous kinds of animals and plants created as eggs or seed, or as full grown? and in the case of mammals, were they created bearing the false marks of nourishment from the mother's womb? &lt;a href="http://books.google.com/books?id=TCwLAAAAIAAJ&amp;dq=origin%20of%20species&amp;pg=PA522&amp;ci=183,174,765,628&amp;source=bookclip"&gt;The Origin of Species,  By Charles Darwin (1859)&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4914317362790537125?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4914317362790537125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4914317362790537125' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4914317362790537125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4914317362790537125'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/10/did-first-giraffe-have-navel-revisited.html' title='Did the First Giraffe Have a Navel, Revisited'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8894778303098721019</id><published>2008-07-21T19:46:00.000-07:00</published><updated>2008-07-21T21:17:55.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3 Cell'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>Citations and Uses of Ray Tracer Code</title><content type='html'>The real-time ray tracing code I wrote for &lt;a href="http://eric_rollins.home.mindspring.com/ray/ray.html"&gt;PS3 Cell&lt;/a&gt; and &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;CUDA GPGPU&lt;/a&gt; is being used by others. &lt;a href="http://www.geo.umn.edu/people/profs/YUEN.html"&gt;David Yuen&lt;/a&gt;'s group at the &lt;a href="http://www.vlab.msi.umn.edu/"&gt;Department of Geology and Geophysics and Minnesota Supercomputing Institute&lt;/a&gt; at the University of Minnesota used my PS3 code as the starting point for tsunami modeling. From their IEEE Vis 2007 poster session &lt;a href="http://vgtc.org/wpmu/vis07/2007/11/30/use-of-ray-tracing-techniques-on-tsunami-simulation-data-with-the-playstation%C2%AE-3/"&gt;Use of Ray Tracing Techniques on Tsunami Simulation Data with the PlayStation® 3&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"This poster will discuss how we have used the PlayStation® 3’s cell processor to implement and employ parallelized visualization, through the form of ray tracing techniques, on tsunami data. By adapting Eric Rollins’ ray tracing package, we were able to implement his ray casting techniques on triangles. This allowed us to triangulate our tsunami datasets, stored as [x, y, height] data, and feed the triangulated data into the program. We rendered 4000 triangle objects from the data and applied a colormap based on each triangle’s height value. Finally, we displayed the generated image."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;They also published a paper &lt;a href="http://www.springerlink.com/content/b49123343u360p84/"&gt;Experiments in scientific computation on the PlayStation 3&lt;/a&gt; in the Springer journal &lt;b&gt;Visual Geosciences&lt;/b&gt;. This &lt;a href="http://www.vlab.msi.umn.edu/people/download/InternshipSummer2007/broten%20wang%20pres.ppt"&gt;PowerPoint presentation&lt;/a&gt; shows images from my and their work.&lt;br /&gt;&lt;br /&gt;Other students are trying CUDA GPGPU ray tracing. &lt;a href="http://www.handsfreeprogramming.com/masters/pre-proposal.doc"&gt;Michael Allgyer (DOC)&lt;/a&gt; cited my work in his masters thesis proposal. &lt;a href="http://hevi.wordpress.com/"&gt;Umut Erturk&lt;/a&gt; asked me about PS3 versus GPGPU for his thesis. &lt;a href="http://forums.nvidia.com/index.php?act=Print&amp;client=printer&amp;f=71&amp;t=70088"&gt;Others&lt;/a&gt; are trying to get my CUDA code working on windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8894778303098721019?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8894778303098721019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8894778303098721019' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8894778303098721019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8894778303098721019'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/citations-and-uses-of-ray-tracer-code.html' title='Citations and Uses of Ray Tracer Code'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4319284692555948655</id><published>2008-07-18T23:46:00.000-07:00</published><updated>2008-07-19T16:47:38.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='Standard ML'/><title type='text'>ACO for TSP with SML/NJ</title><content type='html'>I was asked about the performance of &lt;a href="http://www.smlnj.org"&gt;SML/NJ&lt;/a&gt; on my usual &lt;a href="http://eric_rollins.home.mindspring.com/scalaAnt.html"&gt;ACO for TSP&lt;/a&gt; test.  I used Standard ML of New Jersey v110.67 from Debian apt-get.  I ran it in the interactive shell; no Compilation Manager.  I didn't experiment with Concurrent ML (I don't think it supports multi-core).  Results:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;              Time   Multiple   &lt;br /&gt;           in secs       of C      &lt;br /&gt;C              0.4          1&lt;br /&gt;MLton SML      1.6          4     &lt;br /&gt;SML/NJ         4.9         12&lt;br /&gt;Alice SML    169.0        423&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Results scaled up proportionally when I increased iterations by a factor of 10.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4319284692555948655?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4319284692555948655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4319284692555948655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4319284692555948655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4319284692555948655'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/aco-for-tsp-with-smlnj.html' title='ACO for TSP with SML/NJ'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8532862625655723083</id><published>2008-07-15T23:06:00.000-07:00</published><updated>2008-07-19T16:47:59.667-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Shedskin Python</title><content type='html'>&lt;a href="http://code.google.com/p/shedskin/"&gt;Shedskin&lt;/a&gt; is another experimental Python compiler.  &lt;a href="http://proliferationofniches.blogspot.com/2008/07/ant-colony-optimization-for-tsp-in.html"&gt;Previously&lt;/a&gt; I tested Psyco, a Just-in-Time Python compiler which operates while the program is running.  Shedskin is a more traditional compiler, run in separate steps beforehand.  Shedskin actually generates templated C++ code, which is then compiled with GCC.&lt;br /&gt;&lt;br /&gt;Since Python is dynamically typed while C++ is statically typed, Shedskin performs type inference over your program.  It generates C++ templates to support parametrically polymorphic functions.  A simple example, previously used in my article &lt;a href="http://proliferationofniches.blogspot.com/2008/07/types-and-programming-languages.html"&gt;Types and Programming Languages&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  def palindrome(x, y):&lt;br /&gt;    return (x, y, x)&lt;br /&gt; &lt;br /&gt;  print palindrome(1, 2)&lt;br /&gt;  print palindrome("a", "b")&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Results:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  (1, 2, 1)&lt;br /&gt;  ('a', 'b', 'a')&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With shedskin, the following C++ template is generated:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  template &amp;lt;class A&amp;gt; tuple2&amp;lt;A, A&amp;gt; *palindrome(A x, A y) {&lt;br /&gt;      return (new tuple2&amp;lt;A, A&amp;gt;(3, x, y, x));&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and used:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  str *const_0, *const_1;&lt;br /&gt;  const_0 = new str("a");&lt;br /&gt;  const_1 = new str("b");&lt;br /&gt;  print("%s\n", palindrome(1, 2));&lt;br /&gt;  print("%s\n", palindrome(const_0, const_1));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;While support for many Python constructs and library functions is currently limited, Shedskin was able to compile unmodified the same Ant-Colony-Optimization Python code I had used previously with Psyco Python.  It is significantly faster, coming within 3x the performance of the &lt;a href="http://proliferationofniches.blogspot.com/2008/07/c-baseline-for-aco-tsp.html"&gt;baseline C version&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;                    Time   Multiple   &lt;br /&gt;                 in secs       of C   &lt;br /&gt;C                    0.4          1&lt;br /&gt;Shedskin Python      1.2          3&lt;br /&gt;Psyco Python         5.5         14&lt;br /&gt;Python              40.0        100&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8532862625655723083?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8532862625655723083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8532862625655723083' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8532862625655723083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8532862625655723083'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/shedskin-python.html' title='Shedskin Python'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8097333349116688377</id><published>2008-07-14T21:49:00.000-07:00</published><updated>2008-07-19T16:48:43.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='C Language'/><title type='text'>C baseline for ACO TSP</title><content type='html'>In my previous post on the &lt;a href="http://proliferationofniches.blogspot.com/2008/07/multi-core-problem.html"&gt;Multi-Core Problem&lt;/a&gt; I discussed comparing the performance of multi-core-friendly languages to the baseline performance of single-threaded C code.  The test case I have been using is &lt;a href="http://proliferationofniches.blogspot.com/2008/06/multi-core-ant-colony-optimization-for.html"&gt;Ant Colony Optimization for TSP&lt;/a&gt;.  In a recent &lt;a href="http://leonardo-m.livejournal.com/66171.html"&gt;post&lt;/a&gt; Leonardo Maffi has rewritten my ACO TSP code in C.  This provides a baseline for comparisons:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;           Time   Multiple   Speedup    &lt;br /&gt;        in secs       of C    (1-&gt;2)          &lt;br /&gt;C           0.4          1       n/a&lt;br /&gt;Scala      10.0         25       1.7&lt;br /&gt;Haskell    22.0         55       1.4&lt;br /&gt;Erlang     93.0        233       1.9&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;gcc (GCC) 4.2.4 (Debian 4.2.4-1).&lt;br /&gt;Compiled gcc -Wall -O3 -s ant_c.c -o ant_c&lt;br /&gt;Still 1000 iterations, 200 cities.  &lt;br /&gt;Times for other languages from &lt;a href="http://proliferationofniches.blogspot.com/2008/07/ant-colony-optimization-for-tsp-in.html"&gt;here&lt;/a&gt; .&lt;br /&gt;Initial speedups from &lt;a href="http://proliferationofniches.blogspot.com/2008/06/multi-core-ant-colony-optimization-for.html"&gt;here&lt;/a&gt; (Scala interpolated), and do not model decay at higher numbers of cores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8097333349116688377?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8097333349116688377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8097333349116688377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8097333349116688377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8097333349116688377'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/c-baseline-for-aco-tsp.html' title='C baseline for ACO TSP'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-1232507401789581981</id><published>2008-07-13T16:41:00.000-07:00</published><updated>2008-07-13T17:48:14.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>The Multi-Core Problem</title><content type='html'>&lt;span style="font-style:italic;"&gt;"Since 2002, the limits of power, available instruction-level parallelism, and long memory latency have slowed uniprocessor performance [growth] recently, to about 20% per year [down from 52% per year]."&lt;/span&gt;  Hennessy and Patterson, Computer Architecture: A Quantitative Approach, Fourth Edition (2007), p.3.&lt;br /&gt;&lt;br /&gt;Post-2002 the Moore's Law growth in transistor count has been increasingly devoted to adding additional cores to CPUs, rather than trying to improve single-core performance.  In the prior decade single-threaded C/C++ applications were sped up "for free" with successive CPU generations.  This free ride has ended, and left programmers with a choice.  Either they can rewrite their single-threaded C/C++ applications to be multi-threaded (either explicitly, with &lt;a href="http://en.wikipedia.org/wiki/POSIX_Threads"&gt;pthreads&lt;/a&gt;, or more implicitly, say with &lt;a href="http://en.wikipedia.org/wiki/OpenMP"&gt;OpenMP&lt;/a&gt;), or they can rewrite their applications in a different more multi-core-friendly programming language.&lt;br /&gt;&lt;br /&gt;In choosing an alternative language two important related factors must be examined.  First, how much of a single-threaded performance hit is taken moving to the new language?  If the new language is say 40 times slower than C/C++, you will need a 40-core CPU to get back to where you started (assuming perfect linear speedup).  Second, how much worse than linear is the actual speedup?  If the speedup starts out at 1.5 with 2 cores, and drops below 1 at 8 cores, the new language will probably never catch single-threaded C/C++.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-1232507401789581981?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/1232507401789581981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=1232507401789581981' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1232507401789581981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1232507401789581981'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/multi-core-problem.html' title='The Multi-Core Problem'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2590509704944512291</id><published>2008-07-09T01:28:00.000-07:00</published><updated>2008-07-19T16:49:43.078-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Ant Colony Optimization for TSP in Psyco Python</title><content type='html'>My last &lt;a href="http://proliferationofniches.blogspot.com/2008/07/types-and-programming-languages.html"&gt;post&lt;/a&gt; about Parametric Polymorphism and runtime efficiency got me curious about &lt;a href="http://psyco.sourceforge.net/introduction.html"&gt;Psyco Python&lt;/a&gt;, so I've implemented &lt;a href="http://eric_rollins.home.mindspring.com/pythonAnt.html"&gt;Ant Colony Optimization for TSP in Psyco Python&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Psyco is a compiler for Python. It is a just-in-time compiler, and uses the run-time type usage information to determine which functions should be native-compiled. It is a specializing compiler -- it will create multiple instantiations of the same function with different type parameters. It is very easy to use; just add 2 lines to the top of your program:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import psyco&lt;br /&gt;psyco.full()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It is an experimental project. The documentation warns that &lt;span style="font-weight:bold;"&gt;map&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;lambda&lt;/span&gt; perform poorly, and that list comprehensions (often a reasonable substitute) should be used instead. The original developer has moved on to work on the &lt;a href="http://codespeak.net/pypy/dist/pypy/doc/home.html"&gt;PyPy&lt;/a&gt; project; I should investigate that later.&lt;br /&gt;&lt;br /&gt;Compared to other tested languages the performance of uncompiled Python is average; with Psyco compilation it is surprisingly good.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/FunctionalLanguagePerformance/photo#5220924758578713346"&gt;&lt;img src="http://lh5.ggpht.com/proliferationofniches/SHRzaAIgUwI/AAAAAAAAAN8/IRrAh78Sw6o/s400/AntQuadCore_html_17e46f02.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Erlang   Haskell   Scala   MLton_SML  Python Psyco&lt;br /&gt;93       22        10      1.5        40     5.5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;All times in seconds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 7/12&lt;/span&gt;&lt;br /&gt;Leonardo Maffi has &lt;a href="http://leonardo-m.livejournal.com/66171.html"&gt;pointed out&lt;/a&gt; numerous potential style and performance improvements for the Python code.  Turns out Python already has a &lt;span style="font-weight:bold;"&gt;zip&lt;/span&gt; function (hard to find the info searching www.python.org, mixed with the zip file functions :-), so I have removed my implementation from the code.  No performance change with my zip removed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Update 7/15&lt;/span&gt;&lt;br /&gt;See new post on &lt;a href="http://proliferationofniches.blogspot.com/2008/07/shedskin-python.html"&gt;Shedskin Python&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2590509704944512291?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2590509704944512291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2590509704944512291' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2590509704944512291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2590509704944512291'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/ant-colony-optimization-for-tsp-in.html' title='Ant Colony Optimization for TSP in Psyco Python'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/proliferationofniches/SHRzaAIgUwI/AAAAAAAAAN8/IRrAh78Sw6o/s72-c/AntQuadCore_html_17e46f02.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5758733796295766808</id><published>2008-07-07T02:34:00.000-07:00</published><updated>2008-07-07T02:42:00.486-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='code generation'/><title type='text'>Types and Programming Languages</title><content type='html'>&lt;i&gt;"The first type systems in computer science, beginning in the 1950s in languages such as Fortran, were introduced to improve the efficiency of numerical calculations by distinguishing between integer-valued arithmetic expressions and real-valued ones; this allowed the compiler to use different representations and generate appropriate machine instructions for primitive operations."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I've been reading Pierce's &lt;a href="http://www.cis.upenn.edu/~bcpierce/tapl/"&gt;Types and Programming Languages&lt;/a&gt;. I've become interested in the interactions between Parametric Polymorphism and runtime efficiency. I do have a interesting (to me :-) point at the end, but it takes a lot of introduction...&lt;br /&gt;&lt;br /&gt;rest of my article &lt;a href="http://eric_rollins.home.mindspring.com/types.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5758733796295766808?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5758733796295766808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5758733796295766808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5758733796295766808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5758733796295766808'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/07/types-and-programming-languages.html' title='Types and Programming Languages'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7735013877055636370</id><published>2008-06-20T01:47:00.000-07:00</published><updated>2010-01-03T11:18:54.313-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><title type='text'>Multi-Core Ant Colony Optimization for TSP in Scala</title><content type='html'>I've added a new page &lt;a href="http://eric_rollins.home.mindspring.com/scalaAnt.html"&gt;Multi-Core Ant Colony Optimization for TSP in Scala&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Scala is a hybrid functional and object-oriented programming language. It is based on the Java JVM, so it has available Just-in-Time (JIT) native compilation and native thread support. It has access to the wide variety of class libraries available for Java.&lt;br /&gt;&lt;br /&gt;Like Erlang, Scala supports an Actor-style message-passing concurrency model. More traditional thread-based concurrency with locks and shared memory is also available. Unlike Erlang and Haskell, Scala values are not immutable. Like SML and Haskell, typing is static with type inference. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/FunctionalLanguagePerformance/photo#5213876383364534034"&gt;&lt;img src="http://lh3.ggpht.com/proliferationofniches/SFto8kU9zxI/AAAAAAAAANc/qssErRE9qfw/s400/AntQuadCore_html_m6fcf8bba.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Erlang and Alice SML omitted from graph. Note change from previous tests: 1000 interations, instead of 100. Still 200 cities.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Cores  Erlang  Haskell  Scala  OCaml  MLton  Alice&lt;br /&gt;                                        SML    SML&lt;br /&gt;    1     372       86   41.6           6.0    676&lt;br /&gt;    2     192       63&lt;br /&gt;    3     141       58&lt;br /&gt;    4      98       54   14.6    1.6&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;All times in seconds.&lt;br /&gt;&lt;br /&gt;If anyone knows how to reduce the number of cores used by the JVM, I'll fill in the rest of the table for Scala.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7735013877055636370?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7735013877055636370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7735013877055636370' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7735013877055636370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7735013877055636370'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/06/multi-core-ant-colony-optimization-for.html' title='Multi-Core Ant Colony Optimization for TSP in Scala'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/proliferationofniches/SFto8kU9zxI/AAAAAAAAANc/qssErRE9qfw/s72-c/AntQuadCore_html_m6fcf8bba.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-3343629270612311617</id><published>2008-06-03T00:06:00.000-07:00</published><updated>2008-07-19T16:52:16.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='Haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='Standard ML'/><title type='text'>Functional Languages on Quad-Core (revised)</title><content type='html'>Yesterday's &lt;a href="http://proliferationofniches.blogspot.com/2008/06/functional-languages-on-quad-core.html"&gt;post&lt;/a&gt; generated lots of suggestions.  I've revised the Erlang code to use dict mapping and updating functions.  I didn't use the new Erlang arrays since they are one-dimensional and I need two dimensional arrays.  Here are the new results:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/FunctionalLanguagePerformance/photo#5207541453252979442"&gt;&lt;img src="http://lh4.ggpht.com/proliferationofniches/SETnXGpD6vI/AAAAAAAAAMY/yajB0BnR6NY/s400/AntQuadCore-img3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Cores   Erlang   Haskell   SML&lt;br /&gt;1       38.4     8.6       0.76&lt;br /&gt;2       19.6     6.1&lt;br /&gt;3       14.5     5.5&lt;br /&gt;4       10.3     5.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is the revised &lt;a href="http://eric_rollins.home.mindspring.com/quad_ant.erl.txt"&gt;Erlang&lt;/a&gt; source code, as well as the &lt;a href="http://eric_rollins.home.mindspring.com/quad_ant.hs.txt"&gt;Haskell&lt;/a&gt; quad-core source code used in tests.  The &lt;a href="http://eric_rollins.home.mindspring.com/mlton_ant.sml.txt"&gt;MLton Standard ML&lt;/a&gt; implementation is still single-core, as MLton does not have SMP support (see comments below).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;  Added new &lt;a href="http://proliferationofniches.blogspot.com/2008/06/multi-core-ant-colony-optimization-for.html"&gt;post&lt;/a&gt; with Scala implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-3343629270612311617?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/3343629270612311617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=3343629270612311617' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3343629270612311617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/3343629270612311617'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/06/functional-languages-on-quad-core_03.html' title='Functional Languages on Quad-Core (revised)'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/proliferationofniches/SETnXGpD6vI/AAAAAAAAAMY/yajB0BnR6NY/s72-c/AntQuadCore-img3.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4253110582923380212</id><published>2008-06-01T16:55:00.000-07:00</published><updated>2008-07-19T16:52:45.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ant Colony Optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='natural computation'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='Haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='Standard ML'/><title type='text'>Functional Languages on Quad-Core</title><content type='html'>In an earlier series of articles ending with &lt;a href="http://eric_rollins.home.mindspring.com/erlangAnt.html"&gt;Multi-Core Ant Colony Optimization for TSP in Erlang&lt;/a&gt; I evaluated the performance of the Standard ML, Haskell, and Erlang &lt;a href="http://en.wikipedia.org/wiki/Functional_programming"&gt;functional programming&lt;/a&gt; languages using a test problem of solving the traveling salesman problem using ant colony optimization.  At the time I only had available a dual-core machine.  I have re-run the tests using an Intel quad-core machine and the latest language versions available for Debian Linux.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/FunctionalLanguagePerformance/photo#5207082209579887330"&gt;&lt;img src="http://lh5.ggpht.com/proliferationofniches/SENFrmpD6uI/AAAAAAAAAL4/XmyDxYf1nU4/s400/AntQuadCore-img2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The results match my previous summary:  Erlang is much slower than the others. Erlang is a bytecode interpreted virtual machine while the others are native code compilers. Erlang is also dynamically typed while the others are statically typed.  Like Haskell, Erlang has immutable (single assignment) variables which force lots of copying. Unlike Standard ML and Haskell, no array type is provided so I had to inefficiently implement them using dictionaries. In Erlang each process (thread) does have a separate heap, so there is little interference between processes due to memory allocation or garbage collection. Near perfect speedup is achieved.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/FunctionalLanguagePerformance/photo#5207065549401746130"&gt;&lt;img src="http://lh6.ggpht.com/proliferationofniches/SEM2h2pD6tI/AAAAAAAAALU/V3RCf3wVxJw/s400/AntQuadCoreCPU.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The CPU utilization graph (Erlang, then Haskell, then Standard ML) does show the lack of interference between Erlang threads which makes its speedup possible.  Haskell achieves little speedup at higher numbers of cores.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;  thanks, responses to comments:&lt;br /&gt;&lt;br /&gt;As discussed at the end of an &lt;a href="http://proliferationofniches.blogspot.com/2007/04/mail-bag.html"&gt;earlier posting&lt;/a&gt;, based on email feedback I did try HiPE compilation with Erlang 5.5 on AMD.  It provided no significant improvement, and was not compatible with multi-core operation.  This time I again tried HiPE compilation with Erlang 5.6.2, and get the following with &lt;b&gt;erl&lt;/b&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$erl&lt;br /&gt;Erlang (BEAM) emulator version 5.6.2 [source] [smp:4] &lt;br /&gt;  [async-threads:0] [kernel-poll:false]&lt;br /&gt;&lt;br /&gt;Eshell V5.6.2  (abort with ^G)&lt;br /&gt;1&gt;  c(ant,[native]).&lt;br /&gt;./ant.erl:none: Warning: this system is not configured for&lt;br /&gt;  native-code compilation.&lt;br /&gt;{ok,ant}&lt;br /&gt;2&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Same for &lt;b&gt;erlc&lt;/b&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$erlc +native ant.erl&lt;br /&gt;./ant.erl:none: Warning: this system is not configured for &lt;br /&gt;  native-code compilation.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So it appears the latest i386 Erlang available from Debian Linux apt-get doesn't support native compilation, probably because they chose to enable SMP support instead.&lt;br /&gt;&lt;br /&gt;Erlang arrays are new in the latest release.  Thanks for the info, I'll try them out.&lt;br /&gt;&lt;br /&gt;Yes, MLton SML with one core was the fastest.  Older (pre-quad-core) versions of the code are available linked from the various ACO TSP pages and here:  &lt;a href="http://eric_rollins.home.mindspring.com/mlton_ant.sml.txt"&gt;Standard ML&lt;/a&gt;, &lt;a href="http://eric_rollins.home.mindspring.com/ant.hs.txt"&gt;Haskell&lt;/a&gt;, &lt;a href="http://eric_rollins.home.mindspring.com/ant.erl.txt"&gt;Erlang&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Actually the next language I will probably try is &lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;.  Based on the Java JVM, it may inherit JIT native compilation and good SMP thread support.  It also supports an Actor concurrency model like Erlang.  Apparently Caml dialects don't support SMP.  Of course for many problems (like ACO TSP :-) you are better off simply starting N different fast single-threaded instances of the program and collecting the results in Ruby or some-such.  I am really looking for instances where using a SMP-capable language is a clear win over single-threaded C++.  I haven't written a single-threaded STL C++ version of ACO TSP; I expect it could easily crush Mlton SML once you finally got the bugs out...&lt;br /&gt;&lt;br /&gt;Here are the raw numbers, in seconds:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Cores   Erlang   Haskell   SML&lt;br /&gt;1       87.0     8.6       0.76&lt;br /&gt;2       46.3     6.1&lt;br /&gt;3       34.6     5.5&lt;br /&gt;4       26.2     5.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When I increase the iterations in Haskell by 5x the runtime goes up by 5x (43 secs with 1 core, 26 secs with 4 cores), still showing the same pattern of decreasing improvement with increased cores.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 2:&lt;/b&gt; see &lt;a href="http://proliferationofniches.blogspot.com/2008/06/functional-languages-on-quad-core_03.html"&gt;new post&lt;/a&gt; for revised Erlang code and results.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 3:&lt;/b&gt;&lt;br /&gt;Turns out Erlang HiPE is available in Debian as a separate package (erlang-base-hipe), and is now SMP compatible. But the improvement is only 5%, or 11% if you also native compile dict.erl.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4253110582923380212?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4253110582923380212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4253110582923380212' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4253110582923380212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4253110582923380212'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/06/functional-languages-on-quad-core.html' title='Functional Languages on Quad-Core'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/proliferationofniches/SENFrmpD6uI/AAAAAAAAAL4/XmyDxYf1nU4/s72-c/AntQuadCore-img2.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6362860128523690598</id><published>2008-05-18T00:11:00.000-07:00</published><updated>2009-10-31T18:18:12.260-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>What I.D. is really about</title><content type='html'>My earlier post &lt;a href="http://proliferationofniches.blogspot.com/2008/01/life-is-like-javascript-not-like-java.html"&gt;Life is like Javascript, not like Java&lt;/a&gt; discussed the conflict between Plato's theory of Forms and evolution of new species [*].  I think this conflict is the real motivator behind Intelligent Design.  The idea of Forms is pre-Plato; it is implied in Genesis in the animal Kinds and is actually part of our early cognitive heritage.  For Plato the belief in Forms both presupposed and necessitated a deity.&lt;br /&gt;&lt;br /&gt;The IDers believe in Platonic Forms (often without realizing it), and view species as Forms.  They believe natural processes like evolution cannot produce new Platonic Forms, since the Forms preexist and reside in some other timeless dimension our minds somehow contact.  Space aliens (an alternative proposed by the IDers in my earlier post &lt;a href="http://proliferationofniches.blogspot.com/2008/01/did-first-giraffe-have-navel.html"&gt;Did the First Giraffe have a Navel?&lt;/a&gt;) are also unlikely to be able to add new Platonic Forms.  The only viable alternative is a deity, the same one who set the mathematical and physical constants (like Pi, and the speed of light C) before the universe was created.  The species Forms would have also all been predefined before the universe started.&lt;br /&gt;&lt;br /&gt;[*] Note this summary also slides towards a common trap, not unique to IDers.  My linked post also asserts species don't really exist, but are an arbitrary man-made construct.  So  in an important sense evolution doesn't produce species, only individuals.  The IDers are asserting nature is bounded by preexisting species Forms, while I say nature in generating new individuals does not recognize or respect any such boundaries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6362860128523690598?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6362860128523690598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6362860128523690598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6362860128523690598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6362860128523690598'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/05/what-id-is-really-about.html' title='What I.D. is really about'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-1984023607070077696</id><published>2008-05-13T21:28:00.000-07:00</published><updated>2008-05-14T00:09:15.308-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Why many of us dislike Pair Programming</title><content type='html'>From &lt;a href="http://en.wikipedia.org/wiki/Extraversion_and_introversion"&gt;Extraversion and introversion&lt;/a&gt; on Wikipedia:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;An extravert is energized when around other people. Extraverts tend to "fade" when alone and can easily become bored without other people around. Extraverts tend to think as they speak. When given the chance, an extravert will talk with someone else rather than sit alone and think...&lt;br /&gt;&lt;br /&gt;An introvert is energized when alone. Introverts tend to "fade" when with people and can easily become overstimulated with too many others around...&lt;br /&gt;&lt;br /&gt;Acting, teaching, directing, managing, brokering are fields that favor extraversion...&lt;br /&gt;&lt;br /&gt;(Introverts) often take pleasure in solitary activities such as reading, writing, drawing, watching movies, and using computers. The archetypal artist, writer, sculptor, composer and inventor are all highly introverted...&lt;br /&gt;&lt;br /&gt;Some careers such as computer programming may be more satisfying for an introverted temperament, while other areas such as sales may be more agreeable to the extraverted type.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-1984023607070077696?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/1984023607070077696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=1984023607070077696' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1984023607070077696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1984023607070077696'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/05/why-many-of-us-dislike-pair-programming.html' title='Why many of us dislike Pair Programming'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6770943394826192148</id><published>2008-05-04T18:14:00.000-07:00</published><updated>2008-05-04T18:27:01.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Make'/><title type='text'>Maker Faire 2008</title><content type='html'>&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire2008/photo#5196695617584964466"&gt;&lt;img src="http://lh3.ggpht.com/proliferationofniches/SB5fIYP7I3I/AAAAAAAAAKI/EifTk8tgvIQ/s288/burning1.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire2008/photo#5196695617584964482"&gt;&lt;img src="http://lh3.ggpht.com/proliferationofniches/SB5fIYP7I4I/AAAAAAAAAKQ/FrtbIu4svpE/s288/burning2.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A bit more Burning Man,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire2008/photo#5196695621879931810"&gt;&lt;img src="http://lh4.ggpht.com/proliferationofniches/SB5fIoP7I6I/AAAAAAAAAKg/RTODQS_-qhs/s288/parade.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;a bit more Love Parade,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire2008/photo#5196695617584964498"&gt;&lt;img src="http://lh3.ggpht.com/proliferationofniches/SB5fIYP7I5I/AAAAAAAAAKY/WEJ01ngNrtM/s288/disney.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;a bit more Disney.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire2008/photo#5196695621879931826"&gt;&lt;img src="http://lh4.ggpht.com/proliferationofniches/SB5fIoP7I7I/AAAAAAAAAKo/qmYPCnoFM-Q/s288/theramin.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Theremin"&gt;Theremin&lt;/a&gt; by the Steampunk section was cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6770943394826192148?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6770943394826192148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6770943394826192148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6770943394826192148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6770943394826192148'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/05/maker-faire-2008.html' title='Maker Faire 2008'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/proliferationofniches/SB5fIYP7I3I/AAAAAAAAAKI/EifTk8tgvIQ/s72-c/burning1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4049915555163248901</id><published>2008-04-27T18:03:00.000-07:00</published><updated>2008-05-03T10:53:42.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Waking Life</title><content type='html'>&lt;em&gt;Kant says somewhere: "The lunatic is a dreamer in the waking state." According to Krauss, "Insanity is a dream in which the senses are awake." Schopenhauer terms the dream a brief insanity, and insanity a long dream. Hagen describes delirium as a dream-life which is inducted not by sleep but by disease. Wundt, in his Physiologische Psychologie, declares: "As a matter of fact we ourselves may in dreams experience almost all the manifestations which we observe in the asylums for the insane." &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Sigmund Freud, &lt;a href="http://books.google.com/books?id=M1afft7NY3AC&amp;printsec=frontcover&amp;dq=freud+interpretation+of+dreams&amp;sig=obeNOB0iXFT1KbeODn0AaDQHdFk#PPA66,M1"&gt;The Interpretation of Dreams&lt;/a&gt;, p. 66.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4049915555163248901?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4049915555163248901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4049915555163248901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4049915555163248901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4049915555163248901'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/04/waking-life.html' title='Waking Life'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2680311501508304183</id><published>2008-04-05T12:34:00.000-07:00</published><updated>2009-12-13T12:05:43.385-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='randomness'/><title type='text'>Black Swans in the Market</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Modern_portfolio_theory"&gt;Modern portfolio theory&lt;/a&gt; is based on the assumption that changes in stock prices are &lt;a href="http://en.wikipedia.org/wiki/Normal_distribution"&gt;normally distributed&lt;/a&gt; (follow a bell curve). Benoit Mandelbrot and Nassim Nicholas Taleb disagree with this assumption, and believe market crashes like that of 1987 are much more likely to occur than standard theory predicts.&lt;br /&gt;&lt;br /&gt;For my spring 2006 U.C. Berkeley Extension Statistics class I created a presentation &lt;a href="http://docs.google.com/View?docid=dfwrcdbp_27gg4dq6dj"&gt;Are Daily Changes in Stock Prices Normally Distributed?&lt;/a&gt; I analyzed MSFT (used in the standard MBA Finance textbook as an example of normality!), BRKA, and the S&amp;P 500 index over various date ranges. I found none of them satisfied statistical tests for normality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2680311501508304183?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2680311501508304183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2680311501508304183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2680311501508304183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2680311501508304183'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/04/black-swans-in-market.html' title='Black Swans in the Market'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-24989587300714344</id><published>2008-04-05T10:43:00.000-07:00</published><updated>2009-12-13T12:06:10.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='randomness'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Black Swans</title><content type='html'>"Black Swans", as unlikely or unexpected economic events, are currently in the news. This usage was popularized by &lt;a href="http://en.wikipedia.org/wiki/Black_swan_theory"&gt;Nassim Nicholas Taleb&lt;/a&gt;. It was based on the old European belief that all swans were white, which was contradicted by the discovery of black swans in Australia. But as I discussed &lt;a href="http://proliferationofniches.blogspot.com/2008/01/life-is-like-javascript-not-like-java.html"&gt;earlier&lt;/a&gt; genus and species are human-defined categories. There is no logical contradiction inherent in a black swan, and probabilities related to finding one are really probabilities of finding individuals (animal instances) fitting into ill-defined categories. &lt;br /&gt;&lt;br /&gt;Note the first black swan was discovered in 1697, over 150 years before publication of Darwin's &lt;b&gt;On the Origin of Species&lt;/b&gt; (1859) and over 250 years before Watson and Crick's &lt;b&gt;A Structure for Deoxyribose Nucleic Acid (DNA)&lt;/b&gt; (1953). So seventeenth century notions of species would not include modern concepts of evolutionary descent or DNA similarity. Instead they were based on ideas of fixed categories inherited from Aristotle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-24989587300714344?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/24989587300714344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=24989587300714344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/24989587300714344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/24989587300714344'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/04/black-swans.html' title='Black Swans'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-741272389339738851</id><published>2008-04-05T10:20:00.000-07:00</published><updated>2008-05-03T00:33:24.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>Progress in GPGPU Ray Tracing</title><content type='html'>I've been getting traffic and questions about my pages on &lt;a href="http://eric_rollins.home.mindspring.com/ray/ray.html"&gt;Cell&lt;/a&gt; and &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;CUDA&lt;/a&gt; ray tracing. Saarland University has been doing some interesting &lt;a href="http://graphics.cs.uni-sb.de/Publications/"&gt;work&lt;/a&gt; on Cell and CUDA ray tracing including this paper: &lt;a href="http://graphics.cs.uni-sb.de/Publications/2007/BVHonGPU.pdf"&gt;Realtime Ray Tracing on the GPU with BVH-based Packet Traversal&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-741272389339738851?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/741272389339738851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=741272389339738851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/741272389339738851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/741272389339738851'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/04/progress-in-gpgpu-ray-tracing.html' title='Progress in GPGPU Ray Tracing'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7381875482214806144</id><published>2008-03-01T14:52:00.000-08:00</published><updated>2008-05-03T10:53:28.134-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Funes el memorioso</title><content type='html'>AKA "Funes, His Memory", "Funes the Memorious", "Funes the Elephant-Memoried."  Borges short story about a man who never forgets.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Funes, we must not forget, was virtually incapable of general, platonic ideas.  Not only was it difficult for him to see that the generic symbol "dog" took in all the dissimilar individuals of all shapes and sizes, it irritated him that the "dog" of three-fourteen in the afternoon, seen in profile, should be indicated by the same noun as the dog of three-fifteen, seen frontally.&lt;br /&gt;...&lt;br /&gt;He had effortlessly learned English, French, Portuguese, Latin.  I suspect, nevertheless, that he was not very good at thinking.  To think is to ignore (or forget) differences, to generalize, to abstract.  In the teeming world of Ireneo Funes there was nothing but particulars -- and they were virtually &lt;b&gt;immediate&lt;/b&gt; particulars.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Collected Fictions, by Jorge Luis Borges, translated by Andrew Hurley, p. 136.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7381875482214806144?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7381875482214806144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7381875482214806144' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7381875482214806144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7381875482214806144'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/03/funes-el-memorioso.html' title='Funes el memorioso'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5301912629300270238</id><published>2008-02-02T20:48:00.001-08:00</published><updated>2008-05-03T00:25:04.980-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='natural computation'/><title type='text'>Spiral Galaxy Generation in Ruby</title><content type='html'>&lt;a href="http://picasaweb.google.com/proliferationofniches/Graphics/photo#5162610968199188082"&gt;&lt;img src="http://lh4.google.com/proliferationofniches/R6VHUqkMTnI/AAAAAAAAAGg/DE3WlIDKaJM/s288/galaxy.png" /&gt;&lt;/a&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Logarithmic_spiral"&gt;logarithmic spiral&lt;/a&gt; form often appears in nature. It is seen in nautilus shells, hurricanes, spiral galaxies, and plants. A simple Ruby program can be used to generate this pattern, and the results can be displayed with the GNU statistics package R.  My Ruby code is available &lt;a href="http://eric_rollins.home.mindspring.com/galaxy.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5301912629300270238?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5301912629300270238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5301912629300270238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5301912629300270238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5301912629300270238'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/02/spiral-galaxy-generation-in-ruby.html' title='Spiral Galaxy Generation in Ruby'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7420782285362491585</id><published>2008-01-25T06:40:00.000-08:00</published><updated>2009-10-31T18:19:12.942-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='essentialism'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Life is like JavaScript, not like Java</title><content type='html'>Today most &lt;a href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;object-oriented&lt;/a&gt; programming languages, such as &lt;a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29"&gt;Java&lt;/a&gt;, are based around the &lt;a href="http://en.wikipedia.org/wiki/Class_%28computer_science%29"&gt;class&lt;/a&gt; concept. The class describes the properties shared by all instances (objects) of that class; and individual objects are created as instances of a particular class. Class-based object-oriented programming originated with &lt;a href="http://en.wikipedia.org/wiki/Simula"&gt;Simula&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Smalltalk"&gt;Smalltalk&lt;/a&gt;. An alternative is &lt;a href="http://en.wikipedia.org/wiki/Prototype-based_programming"&gt;prototype-based&lt;/a&gt; object-oriented programming. This is used in &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt;, and originated with &lt;a href="http://en.wikipedia.org/wiki/Self_%28programming_language%29"&gt;Self&lt;/a&gt;. In prototype-based object-oriented programming there are no classes, only instances. New instances are created by copying the properties of an existing instance (the prototype) and adding new properties.&lt;br /&gt;&lt;br /&gt;The difference between class-based and prototype-based programming is a useful metaphor for understanding the complexities of the biological concept of &lt;a href="http://en.wikipedia.org/wiki/Species"&gt;Species&lt;/a&gt;. Life consists of instances copied from one another (like JavaScript). Species are a class hierarchy (like Java) we try to impose on the instances after the fact -- we forget species is a man-made construct. Nature just does whatever it does, and we try to simplify it by mapping to categories and rules. Certainly species is a useful concept for living in the world. You don't want to take a child to the zoo and say "see the animal instance?" "see the plant instance?" (or just "see the instance?" !). You want to say "see the giraffe?". However, the usefulness of species (or folk categories) does not mean they always obey our expectations.&lt;br /&gt;&lt;br /&gt;The difference between class-based and prototype-based programming is also related to the philosophical &lt;a href="http://en.wikipedia.org/wiki/Problem_of_universals"&gt;Problem of Universals&lt;/a&gt;. Do classes exist in the real world, or only instances? The most famous theory of real-world classes is Plato's &lt;a href="http://en.wikipedia.org/wiki/Theory_of_forms"&gt;Theory of Forms&lt;/a&gt;. In &lt;a href="http://en.wikipedia.org/wiki/Platonic_ideal"&gt;Platonic Idealism&lt;/a&gt; pure archetypes for different objects (such as chairs, or giraffes), and ideas (such as justice, or triangles), actually exist in some other space or dimension our minds can contact. This theory was modified, but not completely rejected, by Aristotle's &lt;a href="http://en.wikipedia.org/wiki/Aristotle%27s_theory_of_universals"&gt;Theory of Universals&lt;/a&gt;. Aristotle thought universals were constructed from the common properties of the instances, rather than existing as pure Forms somewhere else. From these Greeks we inherited the idea of dividing the world up into invariant categories, and performing logical operations on them. That works to a point, and makes science possible. But the simplified model is not the real world -- "the map is not the territory".&lt;br /&gt;&lt;br /&gt;The psychology of folk-biology, along with folk-psychology, folk-physics, etc. arose naturally through our evolutionary heritage and individual maturation and learning via interaction with the natural world. Even beliefs in the soul, etc. are understandable in this context. A great book on all this is &lt;a href="http://www.amazon.com/Philosophy-Flesh-Embodied-Challenge-Western/dp/0465056741/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1201149557&amp;sr=8-1"&gt;Philosophy in the Flesh : The Embodied Mind and Its Challenge to Western Thought&lt;/a&gt;, by George Lakoff and Mark Johnson. Yes, it is a 624 page slog. In part II some of the examples can be skimmed. But if you make it through it will completely change your understanding of what metaphor is and how we think. You will realize that 99% of philosophy is out of date. That we often just trade one set of absolutes for another, without understanding the real biological reasons why we are wired to search for and believe in absolutes in the first place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7420782285362491585?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7420782285362491585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7420782285362491585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7420782285362491585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7420782285362491585'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/01/life-is-like-javascript-not-like-java.html' title='Life is like JavaScript, not like Java'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5080882856375578424</id><published>2008-01-20T22:23:00.000-08:00</published><updated>2008-05-03T10:54:52.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='evolution'/><title type='text'>Did the First Giraffe Have a Navel?</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Intelligent_design"&gt;Intelligent Design&lt;/a&gt; is turning into a hot topic. Given all the efforts being made by IDers to get attention, it is surprisingly hard to find details on how their alternative to Evolution is supposed to work.&lt;br /&gt;&lt;br /&gt;A common criticism among IDers is about the lack of fossils of "intermediate forms" between species that evolved from one another. The ID answer is that there was no intermediate form; instead the new species was created whole. An example of an allegedly missing intermediate form is a short-necked ancestor of the giraffe.&lt;br /&gt;&lt;br /&gt;What I'm not finding any details about is exactly how, according to IDers, the first giraffe appeared. Did 2 adults (one male, one female) miraculously poof into existence a million years ago? Or was the first pair of baby giraffes born to and raised by deer? The first seems more likely if the intelligent designer was a deity, the second if it was space aliens[1].&lt;br /&gt;&lt;br /&gt;Any links to explanations would be appreciated. Does anybody know if &lt;a href="http://en.wikipedia.org/wiki/The_Design_of_Life"&gt;The Design of Life&lt;/a&gt; (3rd edition of the ID high school biology textbook &lt;a href="http://en.wikipedia.org/wiki/Of_Pandas_and_People"&gt;Of Pandas and People&lt;/a&gt;) has an answer?&lt;br /&gt;&lt;br /&gt;[1] "It could be space aliens," said William Dembski, a mathematician and philosopher at Baylor University in Texas and author of &lt;b&gt;No Free Lunch&lt;/b&gt; [and later &lt;b&gt;The Design of Life&lt;/b&gt;], a new book on intelligent design. "There are many possibilities." &lt;a href="http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2002/03/17/MN141455.DTL&amp;hw=dembski&amp;sn=005&amp;sc=218"&gt;San Francisco Chronicle, Sunday, March 17, 2002&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5080882856375578424?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5080882856375578424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5080882856375578424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5080882856375578424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5080882856375578424'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2008/01/did-first-giraffe-have-navel.html' title='Did the First Giraffe Have a Navel?'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-8166836890279260621</id><published>2007-12-02T12:16:00.001-08:00</published><updated>2008-05-03T00:19:44.577-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><title type='text'>OpenMP</title><content type='html'>Intel C++ supports &lt;a href="http://en.wikipedia.org/wiki/OpenMP"&gt;OpenMP&lt;/a&gt;, a standardized API for shared-memory multiprocessing in C++.  By adding a simple &lt;b&gt;#pragma&lt;/b&gt; loops can be split up to automatically run in parallel on multiple cores.  I added a simple change to the per-screen-line rendering loop of my generic &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;ray tracer&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    int screenX;&lt;br /&gt;#ifdef USE_OMP&lt;br /&gt;#pragma omp parallel for firstprivate(portPoint)&lt;br /&gt;#endif&lt;br /&gt;    for (screenX = 0;&lt;br /&gt;         screenX &lt; SCREEN_WIDTH;&lt;br /&gt;         screenX++) {&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With this change each pixel is rendered by a separate thread, with a maximum of 4 (the number of cores) running simultaneously.  This use of threads is an alternative to the explicit pthread threading tested previously, where a separate thread was used per line of the screen.  In this case OpenMP is simpler than explicit threading, though it yields slightly lower performance.&lt;br /&gt;&lt;br /&gt;GCC 4.2 also supports OpenMP, but its performance is much worse than Intel.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/CellPerformance/photo#5139495176244532626"&gt;&lt;img src="http://lh4.google.com/proliferationofniches/R1MnofDjlZI/AAAAAAAAAF8/EM1ITQUQyEY/s288/intel.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-8166836890279260621?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/8166836890279260621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=8166836890279260621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8166836890279260621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/8166836890279260621'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/12/openmp.html' title='OpenMP'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6671429166896191166</id><published>2007-10-15T00:40:00.000-07:00</published><updated>2008-05-03T00:15:09.913-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genezzo'/><title type='text'>Genezzo Drive Performance</title><content type='html'>My &lt;a href="http://eric_rollins.home.mindspring.com/genezzo/ClusteredGenezzoDesign.html"&gt;Clustered Genezzo&lt;/a&gt; code is relatively slow because it doesn't use a write-ahead log.  Its access pattern involves repeated writes and syncs alternating between blocks at opposite ends of the data file.  Potentially it could run much faster on a solid-state drive.  I tested the performance of inserting 1000 integers into a table, with a commit after each insert.  I avoided SQL to eliminate Perl Parse::RecDescent overhead.  I tested a internal SATA drive, a Coraid ATA-over-Ethernet SAN drive on  100Mbit ethernet, and a SanDisk USB 2.0 ("keychain") flash drive.  The system monitor showed the internal SATA drive test was CPU-limited, while the ATA-over-Ethernet SAN drive test was network-limited.  I also tested base Genezzo without Genezzo::Contrib::Clustered enabled. Base Genezzo also lacks a write-ahead log, but performs fewer syncs per commit and fewer widely-spaced writes.  All tests were done on 500M databases, except for Genezzo::Contrib::Clustered on flash which used the default 600K (?) size.  With a 500M database the flash test using Genezzo::Contrib::Clustered got 3 commits per second; this requires further investigation...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/Genezzo/photo#5121609009873737010"&gt;&lt;img src="http://lh4.google.com/proliferationofniches/RxOcQk_21TI/AAAAAAAAAE8/mafBbxPP_Vw/s288/GenezzoDrives_html_717d9412.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6671429166896191166?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6671429166896191166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6671429166896191166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6671429166896191166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6671429166896191166'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/10/genezzo-drive-performance.html' title='Genezzo Drive Performance'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-6888762988809122772</id><published>2007-10-01T08:51:00.000-07:00</published><updated>2008-05-03T00:15:33.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genezzo'/><title type='text'>Updated Clustered Genezzo on CPAN</title><content type='html'>Revision 0.34 of &lt;a href="http://search.cpan.org/dist/Genezzo-Contrib-Clustered/"&gt;Genezzo-Contrib-Clustered&lt;/a&gt; has been posted on CPAN.  One module moved, one test fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-6888762988809122772?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/6888762988809122772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=6888762988809122772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6888762988809122772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/6888762988809122772'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/10/updated-clustered-genezzo-on-cpan.html' title='Updated Clustered Genezzo on CPAN'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4812361174604354526</id><published>2007-07-16T22:47:00.000-07:00</published><updated>2008-05-03T00:31:37.408-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><title type='text'>Intel C++ Compiler</title><content type='html'>I recompiled my generic &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;Ray Tracer&lt;/a&gt; code using the Intel C++ compiler.  Using SSE3 auto-vectorization I obtained a 21% speedup over GCC.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/CellPerformance/photo#5088038366817363890"&gt;&lt;img src="http://lh5.google.com/proliferationofniches/RpxX7-G1J7I/AAAAAAAAADM/6MiX7QBvITA/s288/intel.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4812361174604354526?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4812361174604354526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4812361174604354526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4812361174604354526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4812361174604354526'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/07/intel-c-compiler.html' title='Intel C++ Compiler'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-2459267869734499268</id><published>2007-07-04T13:04:00.000-07:00</published><updated>2008-05-03T00:20:38.584-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3 Cell'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><title type='text'>Cell PPC Hardware Threads</title><content type='html'>The PowerPC unit in the PS3 Cell processor supports two hardware threads.  Earlier I added pthread support to the generic ray tracer code.  I have updated &lt;a href="http://eric_rollins.home.mindspring.com/ray/ray.html"&gt;Real-Time Ray Tracing on the Playstation 3 Cell Processor&lt;/a&gt; with PPC performance measurements with pthreads and the IBM XLC compiler.  Pthreads gives a 63% speedup, and XLC gives a 26% speedup, and together they give an 89% speedup:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/CellPerformance/photo#5083435052419017858"&gt;&lt;img src="http://lh3.google.com/proliferationofniches/Rov9Pzo0bII/AAAAAAAAADA/yx6PZlahliM/s288/ppcThreads.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-2459267869734499268?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/2459267869734499268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=2459267869734499268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2459267869734499268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/2459267869734499268'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/07/cell-ppc-hardware-threads.html' title='Cell PPC Hardware Threads'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4671522119924117645</id><published>2007-07-01T14:42:00.000-07:00</published><updated>2008-05-03T00:21:35.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>CUDA GPGPU and Pthreads</title><content type='html'>I've added a new page, &lt;a href="http://eric_rollins.home.mindspring.com/ray/cuda.html"&gt;Real-Time Ray Tracing with NVIDIA CUDA GPGPU and Intel Quad-Core&lt;/a&gt;.  I've created two new versions of the ray-tracer code, one utilizing NVIDIA CUDA, and another using pthreads to exercise multi-core CPUs.  The CUDA code is fastest, but least realistic as a practical ray-tracer.  Pthreads was certainly easiest -- a half hour change to pre-existing generic code. I think CUDA will perform much better on more constrained (in terms of control flow and random memory access) algorithms.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/CellPerformance/photo#5082346982584118386"&gt;&lt;img src="http://lh4.google.com/proliferationofniches/Rogfpzo0bHI/AAAAAAAAACw/Vg74fDOg8fY/s288/cudaPerf.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4671522119924117645?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4671522119924117645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4671522119924117645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4671522119924117645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4671522119924117645'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/07/cuda-gpgpu-and-pthreads.html' title='CUDA GPGPU and Pthreads'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4011145816926499419</id><published>2007-06-09T22:53:00.000-07:00</published><updated>2008-05-03T00:34:07.637-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3 Cell'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><title type='text'>PS3 Cell SDK 2.1</title><content type='html'>I've been getting some compatibility questions about my &lt;a href="http://eric_rollins.home.mindspring.com/ray/ray.html"&gt;PS3 Ray Tracer&lt;/a&gt; code, so I just upgraded my PS3 to Fedora Core 6 and Cell SDK 2.1.  IBM changed the SPU thread API (to pthreads); I now provide code for both versions.  They also now have a PPC native version of the IBM XLC compiler.  It provides an over 50% performance improvement over GCC:&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/CellPerformance/photo#5074309461671496898"&gt;&lt;img src="http://lh3.google.com/image/proliferationofniches/RmuRkg9VTMI/AAAAAAAAACY/nhfvqQcwubQ/s144/processors2.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4011145816926499419?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4011145816926499419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4011145816926499419' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4011145816926499419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4011145816926499419'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/06/ps3-cell-sdk-21.html' title='PS3 Cell SDK 2.1'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5114670158426682012</id><published>2007-05-26T10:48:00.000-07:00</published><updated>2008-05-03T10:53:04.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>Blindsight Site</title><content type='html'>&lt;i&gt;"Humans didn't really fight over skin tone or ideology; those were just handy cues for kin-selection purposes. Ultimately it always came down to bloodlines and limited resources."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Peter Watts, &lt;b&gt;Blindsight&lt;/b&gt;.  This Science Fiction author has an interesting website &lt;a href="http://www.rifters.com/index.htm"&gt;www.rifters.com&lt;/a&gt; with tie-ins, excerpts, and whole texts of his novels.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5114670158426682012?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5114670158426682012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5114670158426682012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5114670158426682012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5114670158426682012'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/05/blindsight-site.html' title='Blindsight Site'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5368236874750212861</id><published>2007-05-19T20:44:00.000-07:00</published><updated>2008-05-03T10:55:24.596-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Make'/><title type='text'>Gadgets from Maker Faire</title><content type='html'>I picked up some useful gadgets at &lt;a href="http://makerfaire.com/"&gt;Maker Faire&lt;/a&gt; today.&lt;br /&gt;&lt;br /&gt;One is a bendable tripod called a &lt;a href="http://www.joby.com/products/gorillapod/"&gt;Gorillapod&lt;/a&gt;.  I've attached it to my webcam.  This should be useful for remote board-gaming.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire/photo#5066472749546142818"&gt;&lt;img src="http://lh3.google.com/image/proliferationofniches/Rk-6H1Tk_GI/AAAAAAAAABg/yl608AC8hKk/s144/DSC00692.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another gadget is the &lt;a href="http://www.makingthings.com/products/KIT-MAKE-CTRL/"&gt;Make Controller Kit&lt;/a&gt;.  It is actually a complete board (no soldering required).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/proliferationofniches/MakerFaire/photo#5066482469057133698"&gt;&lt;img src="http://lh6.google.com/image/proliferationofniches/Rk_C9lTk_II/AAAAAAAAABw/pfyhAMEvlbc/s144/Picture%2026.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It attaches via USB or Ethernet to a PC and provides 8 analog inputs, 8 digital outputs, and 4 servo controllers.  It can be controlled by the PC with simple commands embeddable in most programming languages.  This is similar to the &lt;a href="http://eric_rollins.home.mindspring.com/rbox.htm"&gt;Ditch-Day Stack Controller&lt;/a&gt; I built years ago in college.  The Make Controller's processor (55 MHz ARM RISC) can also be programmed directly in C using the GNU GCC toolchain.  The embedded Real-time OS &lt;a href="http://www.freertos.org/"&gt;FreeRTOS&lt;/a&gt; and web server (!) also look interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5368236874750212861?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5368236874750212861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5368236874750212861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5368236874750212861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5368236874750212861'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/05/maker-faire.html' title='Gadgets from Maker Faire'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5375703713134215127</id><published>2007-05-02T21:33:00.000-07:00</published><updated>2008-05-03T00:32:29.208-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3 Cell'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='GPGPU'/><title type='text'>PS3 Cell Ray Tracing at MIT, GPGPU at UI</title><content type='html'>Earlier this year I wrote an article on &lt;a href="http://eric_rollins.home.mindspring.com/ray/ray.html"&gt;Real-Time Ray Tracing on the Playstation 3 Cell Processor&lt;/a&gt;.  MIT is offering a course on &lt;a href="http://cag.csail.mit.edu/ps3/index.shtml"&gt;Multicore Programming on the PS3&lt;/a&gt;.  One of the examples presented is the &lt;a href="http://cag.csail.mit.edu/ps3/blue-steel.shtml"&gt;Blue Steel Ray Tracer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Earlier I also wrote an article on &lt;a href="http://eric_rollins.home.mindspring.com/gpgpu/index.html"&gt;Four-Dimensional Cellular Automata Acceleration Using GPGPU&lt;/a&gt;.  The University of Illinois at Urbana-Champaign is offering a course on &lt;a href="http://courses.ece.uiuc.edu/ece498/al/"&gt;Programming Massively Parallel Processors&lt;/a&gt; featuring GPGPU programming on &lt;a href="http://developer.nvidia.com/object/cuda.html"&gt;NVIDIA CUDA&lt;/a&gt; hardware.&lt;br /&gt;&lt;br /&gt;Currently applications must be written specifically for the Cell, conventional multi-core CPUs, or GPGPU.  Several organizations are working to develop a common programming model where the same application code could be compiled to run on any of these.  One such system is from &lt;a href="http://www.rapidmind.net/product.php"&gt;RapidMind&lt;/a&gt;.  It's programming model is much like the use of OpenGL within a C++ program.  Arrays are defined using RapidMind container types (like OpenGL graphical types), and then embedded programs are invoked on them (like OpenGL Shading Language).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5375703713134215127?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5375703713134215127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5375703713134215127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5375703713134215127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5375703713134215127'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/05/ps3-cell-ray-tracing-at-mit-gpgpu-at-u.html' title='PS3 Cell Ray Tracing at MIT, GPGPU at UI'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-5993642776614756845</id><published>2007-04-29T09:23:00.000-07:00</published><updated>2008-05-03T10:52:40.659-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><title type='text'>About the Name</title><content type='html'>The blog name I chose, &lt;b&gt;Proliferation of Niches&lt;/b&gt;, is from the Herbert Simon quote I have had at the top my &lt;a href="http://eric_rollins.home.mindspring.com/"&gt;web site&lt;/a&gt; for years:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"If there is such a trend toward variety, then evolution is not to be understood as a series of tournaments for the occupation of a fixed set of environmental niches, each tournament won by the organism that is fittest for that niche. Instead evolution brings about a &lt;b&gt;proliferation of niches&lt;/b&gt;... Vannevar Bush wrote of science as an "endless frontier." It can be endless, as can be the process of design and the evolution of human society, because there is no limit on diversity in the world."&lt;/span&gt;  (The Sciences of the Artificial, p. 165)&lt;br /&gt;&lt;br /&gt;I considered &lt;b&gt;Endless Frontier&lt;/b&gt;, but that is too well known as the title of the Vannevar Bush report (and sounds too much like Star Trek :-)&lt;br /&gt;&lt;br /&gt;After choosing the blog name I found the phrase is currently &lt;a href="http://www.google.com/search?hl=en&amp;q=proliferation+of+niches&amp;btnG=Search"&gt;being used&lt;/a&gt; in discussions in and about the blogosphere:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"With an expanded network, individuals are able to reach out to a potentially larger and more varied pool of culture and information. While debates on globalization in the heyday of mass media suggested that interconnection would lead to the homogenization of culture, in the Internet era, the opposite appears to be more the case. What we are seeing now is a &lt;b&gt;proliferation of niches&lt;/b&gt;. We see this in subcultures such as English-language fandoms of Japanese animation, a case described in the culture chapter. Now teens in the US can gain access to niche Japan-origin media that they would never have been able to get their hands on even a decade ago. In the blogosphere, this tendency has been criticized as creating an “echo chamber,” where bloggers and audiences are connecting with greater frequency and fidelity with people who share their opinions, relying less on the standards of neutrality espoused by the mainstream press. "&lt;/span&gt; &lt;a href="http://www.itofisher.com/mito/ito.netpublics.pdf"&gt;http://www.itofisher.com/mito/ito.netpublics.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is also popular with the "Long Tail" economic crowd:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Pietro assumes that a &lt;b&gt;proliferation of niche markets&lt;/b&gt; will lead to a &lt;b&gt;proliferation of niche suppliers&lt;/b&gt;, and hence the dilution of the authority of the big suppliers. I don't see any reason to believe that this is the case. Indeed, one of Chris Anderson's own preferred examples is based on Amazon sales rank - and there's nothing very diffuse about Amazon, or the authority wielded by Amazon. Much of the buzz around the 'Long Tail' seems to derive, ultimately, from this confusion of the two meanings of 'niche'."&lt;/span&gt; &lt;a href="http://phenomenologic.blogspot.com/2005/09/who-took-money.html"&gt;http://phenomenologic.blogspot.com/2005/09/who-took-money.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While I originally chose the quote for my web site for the biological, technical, and social evolution aspects, I expect the blogosphere and long tail meanings will tie in here.  My site started long before blogs.  Unless you count CHAOS MANOR in the back of Byte Magazine (which I used to read every month at the public library), now calling itself &lt;a href="http://www.jerrypournelle.com/"&gt;The Original Blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-5993642776614756845?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/5993642776614756845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=5993642776614756845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5993642776614756845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/5993642776614756845'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/04/about-name.html' title='About the Name'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7540087815314540278</id><published>2007-04-28T18:09:00.000-07:00</published><updated>2008-07-21T21:21:59.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><title type='text'>Mail Bag</title><content type='html'>My &lt;a href="http://eric_rollins.home.mindspring.com/"&gt;web site&lt;/a&gt; gets a surprising amount of interesting email (beyond the usual headhunter spam and spam spam).  This may be due to certain search engines regarding me as the &lt;a href="http://www.google.com/search?hl=en&amp;q=four+dimensional+cellular+automata&amp;btnG=Search"&gt;world's foremost authority&lt;/a&gt; on four dimensional cellular automata, among other topics :-)&lt;br /&gt;&lt;br /&gt;One email was from an author working on updating a book I had cited.  I gave him and his assistant pointers on the latest I knew about emergent collective intelligence.&lt;br /&gt;&lt;br /&gt;Another email was someone looking for a part name and source for a CPU chip socket in a photo from my &lt;a href="http://eric_rollins.home.mindspring.com/rbox.htm"&gt;robot project&lt;/a&gt; -- not for a robot or a CPU, so I have no idea how he found the page.  I was able to help him.&lt;br /&gt;&lt;br /&gt;The most amusing email was a 1337 haxor claiming to have broken the copy protection on one of my Palm games, so he could "fix" it (our backgammon didn't cheat, &lt;a href="http://www.whitehorsegames.com/techabout.php"&gt;honest!&lt;/a&gt;).  I replied with &lt;a href="http://www.amazon.com/How-Win-Friends-Influence-People/dp/0671723650"&gt;this link&lt;/a&gt;; he replied with &lt;a href="http://www.amazon.com/Palm-Programming-Dummies-Liz-OHara/dp/0764505637"&gt;this one&lt;/a&gt;.  Touche.&lt;br /&gt;&lt;br /&gt;Another person found my &lt;a href="http://eric_rollins.home.mindspring.com/gamesList.html"&gt;board game list&lt;/a&gt;, and was looking for a copy of the Avalon Hill Titan board game to play ($150 on e-bay!).  Sorry, not selling &amp; no leads.&lt;br /&gt;&lt;br /&gt;I was also asked whether I have tried a SAN with more than one &lt;a href="http://eric_rollins.home.mindspring.com/genezzo/cluster.html"&gt;Coraid EtherDrive&lt;/a&gt;.  I have not.&lt;br /&gt;&lt;br /&gt;The latest email suggested improvements to &lt;a href="http://eric_rollins.home.mindspring.com/erlangAnt.html"&gt;Multi-Core Ant Colony Optimization for TSP in Erlang&lt;/a&gt;.  At the time I had tried native compilation in Erlang, but didn't see any speedup and didn't mention it in the article.  On Sun SPARC the correspondent was able to get significant speedup (2x +) on my application with native compilation after he separately native compiled the dict module.  Turns out the native compiler only operates on a specific module, and you must native compile the system modules yourself.  Otherwise the native speedup is lost in the translation between native and bytecode interpreted in calls between modules.  I tried native compiling dict on my AMD system, and didn't get any improvement.  I Also (re)discovered that native compilation is not yet compatible with SMP (multi-core) operation.  The correspondent also got significant improvements by altering some of my data structure choices.  I expect that all three ant algorithm implementations (Erlang, Haskell, and Standard ML (twice)) could be improved be re-visiting my data structure choices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7540087815314540278?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7540087815314540278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7540087815314540278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7540087815314540278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7540087815314540278'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/04/mail-bag.html' title='Mail Bag'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-7139281521910030743</id><published>2007-04-28T17:30:00.000-07:00</published><updated>2008-05-03T00:23:30.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='natural computation'/><title type='text'>DNA as String Rewrite System</title><content type='html'>I'm currently reading Eric Baum's &lt;a href="http://www.whatisthought.com/"&gt;What is Thought&lt;/a&gt;.  It presents an interesting comparison between the operation of DNA and &lt;a href="http://en.wikipedia.org/wiki/Emil_Leon_Post"&gt;Post&lt;/a&gt;  production systems.  These systems provide a set of regular expressions paired with corresponding substitutions.  An example is the rewrite rule:&lt;br /&gt;&lt;br /&gt;x B A B y -&gt; x C B y&lt;br /&gt;&lt;br /&gt;where x and y are variables.&lt;br /&gt;&lt;br /&gt;When provided the string&lt;br /&gt;&lt;br /&gt;A B A B C B C&lt;br /&gt;&lt;br /&gt;the result of the substitution is&lt;br /&gt;&lt;br /&gt;A C B C B C.  (example from Baum)&lt;br /&gt;&lt;br /&gt;These types of operations happen both at the levels of &lt;a href="http://en.wikipedia.org/wiki/Intron"&gt;intron&lt;/a&gt; removal and &lt;a href="http://en.wikipedia.org/wiki/Protein_biosynthesis"&gt;protein synthesis&lt;/a&gt;.  The more common (and easier to visualize) comparison is of DNA to a &lt;a href="http://en.wikipedia.org/wiki/Turing_machine"&gt;Turing Machine&lt;/a&gt;.  Here the DNA (actually RNA) strand is the tape and the &lt;a href="http://en.wikipedia.org/wiki/Ribosome"&gt;Ribosome&lt;/a&gt; is the read/write head.&lt;br /&gt;&lt;br /&gt;Looking back, both comparisons were explored in Hofstadter's &lt;a href="http://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach"&gt;Godel, Escher, Bach: an Eternal Golden Braid&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Metamagical_Themas"&gt;Metamagical Themas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPDATE:  In a later chapter Baum points out the Turing equalence (proven by Minsky, &lt;a href="http://mathworld.wolfram.com/TagSystem.html"&gt;discussed&lt;/a&gt; by Wolfram and others) between Turing machines and Post production systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-7139281521910030743?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/7139281521910030743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=7139281521910030743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7139281521910030743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/7139281521910030743'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/04/dna-as-string-rewrite-system.html' title='DNA as String Rewrite System'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-1751991713869416169</id><published>2007-04-28T16:59:00.000-07:00</published><updated>2008-05-03T10:54:13.386-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='randomness'/><title type='text'>Fooled by Randomness</title><content type='html'>In &lt;a href="http://en.wikipedia.org/wiki/Breaking_the_Spell"&gt;Breaking the Spell: Religion as a Natural Phenomenon&lt;/a&gt; Daniel Dennett cites Julian Jaynes "brilliant but quirky and unreliable book" &lt;a href="http://www.amazon.com/Origin-Consciousness-Breakdown-Bicameral-Mind/dp/0618057072"&gt;The Origins of Consciousness in the Breakdown of the Bicameral Mind&lt;/a&gt; as noting "that the very idea of randomness or chance is of quite recent origin" (Dennet, p. 133):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"Sortilege or the casting of lots differs from omens in that it is active and designed to provoke the gods' answers to specific questions in novel situations.  It consisted of throwing marked sticks, stones, bones, or beans upon the ground, or picking one out of a group held in a bowl, or tossing such markers in the lap of a tunic until one fell out.  Sometimes it was to answer yes or no, at other time to choose one out of a group of men, plots, or alternatives.  But this simplicity -- even triviality to us -- should not blind us from seeing the profound psychological problem involved, as well as appreciating its remarkable historical significance.  We are so used to the huge variety of games of chance, of throwing dice, roulette wheels, etc., all of the vestiges of the ancient practice of divination by lots, that we find it difficult to really appreciate the significance of this practice historically.  It is a help here to realize that there was no concept of chance whatever until very recent times.  Therefore, the discovery (how odd to think of it as a discovery!) of deciding an issue by throwing sticks or beans on the ground was an extremely momentous one for the future of mankind.  For, because there was no chance, the result &lt;i&gt;had&lt;/i&gt; to be caused by the gods whose intentions were being divined." &lt;/span&gt;(Jaynes, p. 339-240)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-1751991713869416169?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/1751991713869416169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=1751991713869416169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1751991713869416169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/1751991713869416169'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/04/fooled-by-randomness.html' title='Fooled by Randomness'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4787159121370972658</id><published>2007-04-28T16:35:00.000-07:00</published><updated>2008-05-03T00:20:01.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel programming'/><title type='text'>Software Transactional Memory</title><content type='html'>I saw an interesting tech talk recently by someone from Intel on their work on &lt;a href="http://en.wikipedia.org/wiki/Software_transactional_memory"&gt;Software Transactional Memory&lt;/a&gt;.  A question from the audience pointed out an interesting problem with exceptions (also discussed under "Implementation issues" in the Wikipedia article).  In STM threads perform optimistic reads, and are retried at commit time if conflicts are detected.  Because the reads are "dirty" inconsistent states may be seen, and null pointer or division by zero exceptions may be thrown.  The application programmer must recognize this possibility and distinguish between transient (should be retried) and fatal errors.  STM trades off the complexity of locking with the complexity of understanding the effects of inconsistent reads.  Opposite to the suggestion in Wikipedia, perhaps the system could check for conflicts at the point of exception, and automatically retry if one is found.  Of course STM still doesn't work for non-restartable operations, such as I/O.  I find the ACID (Atomic, Consistent, Isolated, Durable) status of STM transactions debatable (and advocates don't claim to satisfy all of them).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4787159121370972658?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4787159121370972658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4787159121370972658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4787159121370972658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4787159121370972658'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/04/software-transactional-memory.html' title='Software Transactional Memory'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3608739767243883233.post-4777003015700264177</id><published>2007-04-28T16:10:00.000-07:00</published><updated>2007-04-28T16:34:54.966-07:00</updated><title type='text'>First Post</title><content type='html'>This blog will probably be a collection of ideas for possible future articles on my &lt;a href="http://eric_rollins.home.mindspring.com/"&gt;web site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3608739767243883233-4777003015700264177?l=proliferationofniches.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://proliferationofniches.blogspot.com/feeds/4777003015700264177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3608739767243883233&amp;postID=4777003015700264177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4777003015700264177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3608739767243883233/posts/default/4777003015700264177'/><link rel='alternate' type='text/html' href='http://proliferationofniches.blogspot.com/2007/04/first-post.html' title='First Post'/><author><name>Eric Rollins</name><uri>http://www.blogger.com/profile/10320714702919518976</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
