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

<channel>
	<title>A Modest Construct &#187; software</title>
	<atom:link href="http://heliologue.com/tag/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://heliologue.com</link>
	<description>Let joy be unconfined. Let there be dancing in the streets, drinking in the saloons, and necking in the parlor.</description>
	<lastBuildDate>Sun, 29 Apr 2012 15:33:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Linux Command-Line Compressors Compared</title>
		<link>http://heliologue.com/2011/05/03/linux-command-line-compressors-compared/</link>
		<comments>http://heliologue.com/2011/05/03/linux-command-line-compressors-compared/#comments</comments>
		<pubDate>Tue, 03 May 2011 13:22:31 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=7042</guid>
		<description><![CDATA[A long time ago, I ran a comparison of various command-line compressors in Linux. Recently, intrigued by the rise of parallel computing and the emergence of multi-processor versions of old *nix favorites like gzip and bzip2, I thought I&#8217;d give the benchmark another go. The Setup My machine is an Intel Core 2 Quad Q6600 [...]]]></description>
			<content:encoded><![CDATA[<p>A long time ago, I ran a <a href="http://heliologue.com/2007/02/01/linux-command-line-compressor-benchmarks/">comparison</a> of various command-line compressors in Linux.  Recently, intrigued by the rise of parallel computing and the emergence of multi-processor versions of old *nix favorites like gzip and bzip2, I thought I&#8217;d give the benchmark another go.</p>
<p><span id="more-7042"></span></p>
<h3>The Setup</h3>
<p>My machine is an Intel Core 2 Quad Q6600 [2.4Ghz] on a Gigabyte GA-N680SLI-DQ6 (nVidia 680i), with 4GB of Corsair XMS2(PC2 6400).  The tests were run on a vanilla installation of Ubuntu 10.10 x64, fully updated.  The compressors themselves were compiled by me from source code, so I would have the latest and greatest at the time of testing.</p>
<p>I did not use a RAM disk, since I wanted all of my available RAM available for compression (some of the tests used aggressive settings).  I did use a freshly-formatted SATA disk for the purpose, however.  For further information, see the methodology and results.</p>
<p>Timing was done with the GNU <code>time</code> command.</p>
<h3>The Compressors</h3>
<ul>
<li><a rel="external" href="http://www.gnu.org/software/gzip/"><b>gzip</b></a>. Perhaps the most well-known compressor on Linux, gzip is a DEFLATE-based compressor which offers moderate compression at a very fast speed. Note: I made the mistake of retrieving the sources from <a href="http://www.gzip.org">www.gzip.org</a>, which has links to v1.2.4, from 1999.  The most recent stable version is 1.4, from <a href="http://ftp.gnu.org/gnu/gzip/">GNU&#8217;s servers</a>. The version reflected in the benchmark, therefore, is out of date.</li>
<li><a rel="external" href="http://bzip.org/"><b>bzip2</b></a>. An old favorite, bzip2 is a basic block-level compressor which is more aggressive than its cousin, gzip, at the cost of speed.</li>
<li><a rel="external" href="http://tukaani.org/xz/"><b>xz</b></a>.  A relatively new compressor, xz arose from the ashes of <a href="http://tukaani.org/lzma/">LZMAUtils</a>, an implementation of the LZMA compression spec from Igor Pavlov&#8217;s 7-zip project. xz is is the command-line equivalent, and similar in usage to gzip and bzip2; more to the point, it&#8217;s been accepted by the GNU toolchain and now has its own filter in tar (-J).</li>
<li><a rel="external" href="http://rzip.samba.org/"><b>rzip</b></a>.  Originally written by Andrew Tridgell (of Samba fame, and who indirectly caused <i>git</i>, when you think about it) as a doctoral project.  It functions similarly to gzip and bzip2, according to its author, but attempts to take advantage of &#8220;long-distance redundancies&#8221; in larger files; that is, where bzip2 may only process 900K chunks at a time, rzip will seek to look beyond that in order to eek out additional compression.</li>
<li><a rel="external" href="http://www.lzop.org/"><b>lzop</b></a>. One of the Lempel-Ziv-Oberhumer (LZO) compressors, it focuses on decompression speed rather than pure compression.</li>
<li><a rel="external" href="http://ncompress.sourceforge.net/"><b>compress</b></a>. Though not really a contender in any real zip, I included the old <i>compress</i> program for comparative purposes.  Compress is a fast LZW compressor which creates .Z files, and can be triggered as a filter in tar with -Z.  The implementation used is <a href="http://ncompress.sourceforge.net/">ncompress</a>.</li>
<li><a rel="external" href="http://www.info-zip.org/"><b>zip</b></a>.  An old standby, zip creates, well, .zip files, using the DEFLATE algorithm. One difference between zip and gzip is that zip creates a structured archive (no tar necessary).</li>
<li><a rel="external" href="http://freshmeat.net/projects/lzip/"><b>lzip</b></a>. Another LZMA-based compressor, lzip is heavily-asynchronous, emphasizing small decompression times at the expensive of larger initial compression time.</li>
<li><a rel="external" href="http://p7zip.sourceforge.net/"><b>p7zip</b></a>. The *nix version of Igor Pavlov&#8217;s 7-Zip for Windows, p7zip has a slew of options (including different compressors, such as ppmd), but we&#8217;ll be focusing on lzma2.</li>
<li><a rel="external" href="http://www.zlib.net/pigz/"><b>pigz</b></a>. A parallel implementation of gzip. Like most parallel implementations, pigz sacrifices a small amount of compression efficiency for large gains in speed.
</li>
<li><a rel="external" href="http://freshmeat.net/projects/lbzip2"><b>lbzip2</b></a>. A parallel implementation of bzip2. </li>
<li><a rel="external" href="http://www.compression.ca/pbzip2/"><b>pbzip2</b></a>. Another parallel implementation of bzip2. </li>
<li><a rel="external" href="http://www.quicklz.com/"><b>quicklz (qpress)</b></a>. A very fast implementation of LZO, the QuickLZ library was at version 1.5.0 at the time of the benchmark, but its companion compressor program, QPress, was linked against 1.4.1.</li>
<li><a rel="external" href="http://freshmeat.net/projects/lxz"><b>lxz</b></a>.  A parallel implementation of the <code>xz</code> compressor.  By the same creator as <code>lbzip2</code>.  It supports compression <em>only</em>, so the benchmark will not contain decompression numbers for this tool.  The author considers it a stopgap until xz gets multithreading support.</li>
<li><a rel="external" href="http://freshmeat.net/projects/lrzip"><b>lrzip</b></a>. Long ago, a fork of <code>rzip</code>, Con Kolivas&#8217; <code>lrzip</code> has become a full-fledged compressor with multiple possible algorithms to choose from; the only one tested was LZMA.  Note that the version tested here (0.571) was replaced shortly after I ran my benchmarks by v0.600, which was a large rewrite ostensibly improving decompression speed.</li>
<li><a rel="external" href="http://www.nongnu.org/lzip/plzip.html"><b>plzip</b></a>. A straightfoward parallelization of the <code>lzip</code> compressor.</li>
<div class="info">
<p><strong>A note on options.</strong>  </p>
<p>Most of the compressors tested follow the same basic pattern for specifying compression strength, modeled after the options of gzip and bzip2.  <code>-#</code> specifies compression strength, where # is a number.  On some compressors, <code>0</code> is the lowest; on others, it&#8217;s <code>1</code>.  My approach was to test the lowest strength, the highest strength, and the default strength (either 5 or 6, depending).</p>
<p>On some multithreaded compressors, it was necessary to specify the number of threads or processors to use.  Where this was required, I use a value of <code>4</code>, the number of cores in my processor.
</p></div>
<h3>The Methodology</h3>
<p><b>Corpus</b>. I downloaded the 11/3/2009 <code>pages-articles.xml.bz2</code> from Wikipedia&#8217;s <a  rel="external" href="http://dumps.wikimedia.org/enwiki/20091103/">mirror</a> an uncompressed it.  23+ GB. Uh oh.  Realizing that I didn&#8217;t have all the time in the world to spend compressing things, I truncated the file to its first 1&#8217;073&#8217;741&#8217;824 bytes (1GB) using the <code>truncate</code> command.</p>
<p>For each compressor/setting, the compression was run three times; the compressed size was recorded; then the decompression was run three times.  Each run&#8217;s time was recorded, and the average and standard deviation was calculated for both compression and decompression.</p>
<p>Note that in some cases, operation speed was limited by the speed of the hard drive (I&#8217;ll cover this in detail in the next section); there isn&#8217;t much to be done about this, other than the note it. Multiple runs should tease out inconsistencies and show where there is a real discrepancy as opposed to a consistent bottleneck.</p>
<h3>The Results</h3>
<p>The data table itself is far too large to fit in this template, <a rel="external" href="https://spreadsheets.google.com/spreadsheet/lv?key=0AjhZYyrcZ50idGdQaGdPYmF3RGk5emJYOG13ZkYzSHc&#038;hl=en&#038;f=0&#038;rm=full">but you can see it as Google Spreadsheet here</a>.</p>
<p>There&#8217;s no way to crown a clear winner, since all compressors mean tradeoffs.  If I were as smart and capable as <a href="http://www.maximumcompression.com/">Werner Bergman</a>, I could have a formula worked up for <a href="http://www.maximumcompression.com/data/summary_mf2.php">compressor efficiency</a>, but I&#8217;m more curious to see the differences between single-threaded compressors and their multithreaded variants.</p>
<p>To get it out of the way:  <code>xz</code> at maximum compression had the best compression ratio of all tested configurations.  At 243&#8217;350&#8217;864 bytes, it shrank the test corpus to 22.7% of its original size.  This came at a heavy cost, though, as compression at this level took an average of 27 minutes, give or take 200 seconds.</p>
<p>The <em>fastest</em> compression, by far, came from QuickLZ, whose lowest setting managed to process the entire 1GB file in an average of <em>6.3 seconds</em>.  Its maximum setting doubled the time to 12 seconds and shaved off an additional 75MB, but the price of such fantastic speed is much less compression: the maximum setting reduced our test corpus to only 44.4% of its original size.</p>
<p class="info">
Remember that there is no <b>best</b> compressor; there is only a compressor that is <b>best</b> for your needs. Compression is all about diminishing returns:  it takes a mere 12 seconds to get from 100% to 44% with QuickLZ.  It takes an additional <em>27 minutes</em> to get from 44% to 22% with <code>xz</code>.
</p>
<p>When looking at the decompression times, one might notice that the scores bottom out at between 12-15 seconds.  My guess is this does not reflect the decompression speed at much as the write speed of the hard drive.  In theory, one might see even lower numbers with a RAMdisk, but in practice, decompression speeds which outpace storage write speeds are unlikely to be taken advantage of outside a benchmark scenario.</p>
<p>The numbers for <code>bzip2</code> vary wildly, for reasons I haven&#8217;t figured out.  I ran a second iteration of three tests for each setting and got similar numbers, so I stuck with my initial measurements.  Other compressors don&#8217;t have such high standard deviations relative to their runtimes, so I don&#8217;t <em>think</em> it was a problem with my setup. </p>
<p>Generally speaking, the parallel implementations of single-threaded compressors fare extremely well.  Let&#8217;s look at the average times for some of the standard ones. Note that compression ratios are given as the percentage of the original filesize, not the percent reduction, so lower is better.</p>
<table>
<caption>bzip2</caption>
<thead>
<tr>
<th>
			Compressor
		</th>
<th>
			Compression Time (s)
		</th>
<th>
			Compression Ratio
		</th>
<th>
			Decompression Time (s)
		</th>
</tr>
</thead>
<tbody>
<tr>
<td>bzip2 (min)</td>
<td>186.509</td>
<td>31.59%</td>
<td>63.342</td>
</tr>
<tr>
<td>lbzip2 (min)</td>
<td>38.852</td>
<td>31.63%</td>
<td>18.520</td>
</tr>
<tr>
<td>pbzip2 (min)</td>
<td>38.072</td>
<td>31.61%</td>
<td>13.533</td>
</tr>
<tr>
<td>bzip2 (default)</td>
<td>169.474</td>
<td>28.14%</td>
<td>64.432</td>
</tr>
<tr>
<td>lbzip2 (default)</td>
<td>42.085</td>
<td>28.15%</td>
<td>19.140</td>
</tr>
<tr>
<td>pbzip2 (default)</td>
<td>40.698</td>
<td>28.33%</td>
<td>14.630</td>
</tr>
<tr>
<td>bzip2 (max)</td>
<td>206.307</td>
<td>27.18%</td>
<td>66.460</td>
</tr>
<tr>
<td>lbzip2 (max)</td>
<td>52.091</td>
<td>27.19%</td>
<td>23.092</td>
</tr>
<tr>
<td>pbzip2 (max)</td>
<td>52.438</td>
<td>27.19%</td>
<td>20.617</td>
</tr>
</tbody>
</table>
<table>
<caption>gzip</caption>
<thead>
<tr>
<th>
			Compressor
		</th>
<th>
			Compression Time (s)
		</th>
<th>
			Compression Ratio
		</th>
<th>
			Decompression Time (s)
		</th>
</tr>
</thead>
<tbody>
<tr>
<td>gzip (min)</td>
<td>36.146</td>
<td>40.09%</td>
<td>19.195</td>
</tr>
<tr>
<td>pigz (min)</td>
<td>8.892</td>
<td>40.06%</td>
<td>12.199</td>
</tr>
<tr>
<td>gzip (default)</td>
<td>82.452</td>
<td>34.65%</td>
<td>16.912</td>
</tr>
<tr>
<td>pigz (default)</td>
<td>16.673</td>
<td>34.69%</td>
<td>12.852</td>
</tr>
<tr>
<td>gzip (max)</td>
<td>134.889</td>
<td>34.24%</td>
<td>16.513</td>
</tr>
<tr>
<td>pigz (max)</td>
<td>25.051</td>
<td>34.28%</td>
<td>12.129</td>
</tr>
</tbody>
</table>
<table>
<caption>xz</caption>
<thead>
<tr>
<th>
			Compressor
		</th>
<th>
			Compression Time (s)
		</th>
<th>
			Compression Ratio
		</th>
<th>
			Decompression Time (s)
		</th>
</tr>
</thead>
<tbody>
<tr>
<td>xz (min)</td>
<td>138.272</td>
<td>33.82%</td>
<td>50.916</td>
</tr>
<tr>
<td>lxz (min)</td>
<td>29.890</td>
<td>33.80%</td>
<td></td>
</tr>
<tr>
<td>xz (default)</td>
<td>1164.772</td>
<td>24.45%</td>
<td>34.114</td>
</tr>
<tr>
<td>lxz (default)</td>
<td>39.997</td>
<td>24.96%</td>
<td></td>
</tr>
<tr>
<td>xz (max)</td>
<td>1643.367</td>
<td>22.66%</td>
<td>31.968</td>
</tr>
<tr>
<td>lxz (max)</td>
<td>699.268</td>
<td>23.07%</td>
<td></td>
</tr>
</tbody>
</table>
<p>As you can see, most parallel implementations decrease compression <em>and</em> decompression times by a factor of between 3 and 5, while taking, at most, a few tenths of a percent increase in final file size.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2011/05/03/linux-command-line-compressors-compared/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GNOME Audio Player Shootout v3.0</title>
		<link>http://heliologue.com/2010/08/29/gnome-audio-player-shootout-v3-0/</link>
		<comments>http://heliologue.com/2010/08/29/gnome-audio-player-shootout-v3-0/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 17:08:05 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=5650</guid>
		<description><![CDATA[In January 2007 I published the GNOME Audio Player Shootout, a simple comparison of the options available to GNOME users for handling their day-to-day playback needs. It proved to be so popular that in December of 2008 I did a followup, excluding some abandoned players and adding some new ones. Though it hasn&#8217;t been quite [...]]]></description>
			<content:encoded><![CDATA[<p><img class="right" alt="GNOME logo" src="/img/tech/gnome.png"></p>
<p>In January 2007 I published the <a href="http://heliologue.com/2007/01/18/gnome-audio-player-shootout/">GNOME Audio Player Shootout</a>, a simple comparison of the options available to GNOME users for handling their day-to-day playback needs.  It proved to be so popular that in December of 2008 I did a followup, excluding some abandoned players and adding some new ones.  Though it hasn&#8217;t been quite two years yet, I thought it was time for another look at the state of audio players in the GNOME ecosystem.</p>
<p>This time around, I&#8217;ve got a heavy focus on new players, as there have been a number of new arrivals since my last shootout that show a lot of promise.  This article will cover (in no particular order): </p>
<ul>
<li>Rhythmbox (0.12.8)</li>
<li>Exaile (3.2.0)</li>
<li>Banshee (1.7.4)</li>
<li>Quod Libet (2.2.1)</li>
<li>Guayadeque (0.2.6-svn1186)</li>
<li>DeaDBeeF (0.4.1)</li>
<li>aTunes (2.0.1)</li>
<li>xnoise (0.1.10)</li>
<li>GMusicBrowser (1.1.5-git)</li>
<li>Aqualung (0.9~beta11)</i>
</ul>
<p>All testing was done using an up-to-date Ubuntu Lucid x64 with all necessary repositories added, including some PPAs for the last versions of these players.  Considered but not reviewed were Decibel Audio Player (hasn&#8217;t changed appreciably since last time), Gejengel (so unstable as to be unusable), and Bluemindo (still too simple to be useful).  </p>
<p>Please note that this article necessarily incorporates some of my own biases.  I am an avowed <a rel="external" href="http://foobar2000.org">foobar2000</a> fan and you will notice that I tend to favor the utility-minded players over the media centers and iTunes clones.  This article should still be useful, even if your own inclinations are different from mine.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2010/08/29/gnome-audio-player-shootout-v3-0/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Now Reading Reloaded changes</title>
		<link>http://heliologue.com/2009/08/19/now-reading-reloaded-changes/</link>
		<comments>http://heliologue.com/2009/08/19/now-reading-reloaded-changes/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 21:15:48 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[Now Reading]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=3966</guid>
		<description><![CDATA[Starting August 15th, Amazon&#8217;s web service API started requiring all requests to be signed—that is, they must include a cryptographically generated key. This is important, because while the service as always required an ID to run, it was never a secret. In fact, the former developer&#8217;s access ID has been embedded in the Now Reading [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://affiliate-program.amazon.com/gp/advertising/api/detail/faq.html">Starting August 15th</a>, Amazon&#8217;s web service API started requiring all requests to be signed—that is, they must include a cryptographically generated key.</p>
<p>This is important, because while the service as <em>always</em> required an ID to run, it was never a secret.  In fact, the former developer&#8217;s access ID has been embedded in the <a href="/projects/now-reading-reloaded/">Now Reading Reloaded</a> script since the very beginning. </p>
<p>The change, however, requires the addition of <em>another</em> key, this one like a password, and it&#8217;s not supposed to be given out.  Since Now Reading Reloaded is open source, that means anyone who wanted to could use my key.</p>
<p>As a result, I&#8217;ve modified the plugin to use two more fields in the options screen, one for the Access ID and one for the Secret Key:  both of these are required to add books from Amazon, and you will have to get both yourself.</p>
<p>Actually, it&#8217;s easy to do:  <a href="http://www.amazon.com/gp/aws/registration/registration-form.html">go to the AWS site and register</a>.  Then plug the two keys they give you into the appropriate spaces in the Now Reading options screen.  Resume reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2009/08/19/now-reading-reloaded-changes/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Now Reading news</title>
		<link>http://heliologue.com/2009/07/01/now-reading-news/</link>
		<comments>http://heliologue.com/2009/07/01/now-reading-news/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 05:14:45 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=3904</guid>
		<description><![CDATA[I have providing some light maintenance development for Rob&#8217;s Now Reading plugin; since WordPress 2.7 wholly changed its interface, the plugin need some tweaking to make it work. Up to this point, I&#8217;ve been hosting it locally, mostly picking at it whenever time allows. I just updated it the other day to add a new [...]]]></description>
			<content:encoded><![CDATA[<p>I have providing some light maintenance development for Rob&#8217;s <a href="http://robm.me.uk/projects/plugins/wordpress/now-reading">Now Reading plugin</a>;  since WordPress 2.7 wholly changed its interface, the plugin need some tweaking to make it work.</p>
<p>Up to this point, I&#8217;ve been <a href="http://heliologue.com/projects/now-reading-for-wordpress-27/">hosting it locally</a>, mostly picking at it whenever time allows.  </p>
<p>I just updated it the other day to add a new feature (editable ASIN) and hopefully fix a recurring bug (<code>CDATA</code> error when searching).</p>
<p>In any case, I hope to make a push in the near future to clean it up and submit it the official <a href="http://wordpress.org/extend/plugins/">WordPress plugin site</a> so that its user can benefit from auto-update, etc. etc.  My own much-atrophied skills as a PHP developer aside (I deal mostly with Java at work), I think that it will ultimately benefit everybody, assuming I can make it so that the updates don&#8217;t override custom templates (perhaps giving preference to Now Reading template files in the theme folder?).</p>
<p><del datetime="2009-07-06T16:37:43+00:00">Stay tuned.</del> <ins datetime="2009-07-06T16:37:43+00:00">The plugin is now <a href="http://wordpress.org/extend/plugins/now-reading-reloaded/">here</a>.</ins></p>
<p class="alert">
Comments on this post are closed.  For support, please use the <a href="http://wordpress.org/tags/now-reading-reloaded">forum feature </a> of the official plugin repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2009/07/01/now-reading-news/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>The Ethics of Software Patents</title>
		<link>http://heliologue.com/2009/04/21/the-ethics-of-software-patents/</link>
		<comments>http://heliologue.com/2009/04/21/the-ethics-of-software-patents/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 04:54:44 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[essays]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=3801</guid>
		<description><![CDATA[rev. 15 April 2009; get the PDF The laws that protect the creation of content are manifold and complicated—even byzantine. America has copyright protection, which applies to concrete expressions of information, trademark protection, which protects distinctive symbols or verbiage associated with a legal entity, and patent protection, which protects &#8220;(1) processes, (2) machines, (3) manufactures [...]]]></description>
			<content:encoded><![CDATA[<p class="info">
rev. 15 April 2009; get the <a href="/pdf/the_ethics_of_software_patents.pdf">PDF</a>
</p>
<p>The laws that protect the creation of content are manifold and complicated—even byzantine.  America has copyright protection, which applies to concrete expressions of information, trademark protection, which protects distinctive symbols or verbiage associated with a legal entity, and patent protection, which protects &#8220;(1) processes, (2) machines, (3) manufactures or (4) compositions of matter&#8221; and is perhaps the least understood of all the various kinds of intellectual property protection (Guntersdorfer, 2003).</p>
<p>The explosion of the Internet in the late 20th and early 21st centuries has thrown into stark relief both the legal problems associated with protecting content in a digital age as well as the ethical issues inherent in the existing process for acquiring official intellectual property protection and the rights afforded involved parties in a redress of grievances.  Copyright law specifically has come into public consciousness primarily due to the popularity of filesharing: for all intents and purposes, the advent of modern filesharing was the 1999 arrival of Napster, a program which allowed anyone to exchange digital copies of music online, for free.  Legal problems eventually forced Napster to shut down (Ante, Brull, Herman , &amp; France, 2000), but its legacy leaves not only alternative modes of filesharing, but a whole host of new web-based content creation engines that toe the lines of fair use.</p>
<p><span id="more-3801"></span></p>
<p>The politics of copyright is, despite its complexity, relatively straightforward and beyond the purview of this writing.  More relevant to the machinations of the world of business are patents, which tend to pertain to the inventions and processes that drive economic engines.  While some companies, such as Coca-Cola, eschew the legal—albeit ephemeral—benefit of patents in favor of strict secrecy, the legal mechanism is still quite popular:  the United States Patent Office grants between 175,000 and 195,000 patents every year (&#8220;U.S. Patent Statistics,&#8221; 2009).  </p>
<p>Ideally, patent mechanisms act as a function of market efficiency:  by protecting corporate or industrial investment in Research &amp; Development, it promotes economic growth, protects ingenuity, and rewards success;  most patent law even allows for the eventual &#8220;freeing&#8221; of the patent after set duration—now usually twenty years (Heisey, King, Rubenstein, &amp; Shoemaker, 2006, pp. iii-v, 4-7).  What has come to pass since the 1970s, however, is a new scope of invention—specifically, computer software—that the existing patent protection mechanism is ill-equipped to handle.  The critical question this raises is such:  to what extent can the granting of patents for software be considered ethical?  Conversely, if this is not the case, to what degree is it unethical or antithetical to proposed ideas of market efficiency?</p>
<p>It is vital to illustrate the very important distinctions between copyright and patent when it comes to computer software.  Programs consist of written code (called &#8220;source code&#8221;), usually in a high-level programming language, which is at least partially intelligible to a human reader:  this code, like any other written work, is subject to copyright.  When portions of the source code to Microsoft&#8217;s WindowsÂ® Operating System were stolen and distributed on the Internet (Lemos, 2004), the case was one of unauthorized distribution of copyrighted content, on par with selling bootlegged DVDs.  All source code must eventually be &#8220;compiled&#8221; to create the usable form of software that can be run on personal computers;  the compilation process turns source code into a series of 1&#8242;s and 0&#8242;s, which the computer uses to runs billions of mathematical operations per second.  Abstractions aside, all computer programs are little more than large lists of math problems which produce a desired result.  Software patents are, at heart, an attempt to gain a &#8220;monopoly&#8221; on this math (Guntersdorfer, 2003).</p>
<p>&#8220;Many politicians [...] don&#8217;t understand what software patents do. They often think patents are similar to copyright law [...], which is not the case,&#8221; writes noted open source software1 advocate Richard Stallman (2005).  He proposes a hypothetical scenario wherein literary concepts can and are patented, and Victor Hugo is unable to write Les Misérables because some lucky entity has acquired a patent for &#8220;a communication process that represents, in the mind of a reader, the concept of a character who has been in jail for a long time and subsequently changes his name.&#8221;  There exist, he insists, patents for such simple things as a progress bar, or accepting online payments via credit card.</p>
<p>To such opponents of software patents, the very nature of patents is inherently unethical in this area of creative content:  rather than protect the ingenuity and effort of intellectual investors (so to speak), it rewards those who seek to manipulate the legal system in order to monopolize generic or overly-broad concepts.</p>
<p>In order to examine the ethical ramifications of patents, some working ethical precepts must be established.  Specifically:</p>
<ol>
<li>Economic efficiency is an ethical good insofar as it contributes broadly to the public welfare, within normative moral constraints (Schultz, 2001, pp. 12-14).</li>
<li>Intellectual investment, in the form of corporate research and development or personal ingenuity, can and should be rewarded with an as-yet unspecified right to profit from said effort.  This, besides being an ethical good in and of itself, directly contributes to principle #1 (&#8220;Are Efforts&#8221;, 2001).</li>
<li>The right to personal property, including intellectual property within reasonable bounds, is unambiguous and unabridged.</li>
</ol>
<p>In addition to the aforementioned points, several more may be offered which are relevant to the discussion of computer software:</p>
<ol start="4">
<li>The labor efficiency offered by computer software (as well as its attendant effect upon the overall economic good), may be assumed of equal importance to the economic good of content creators—i.e. interoperability, work efficiency, and accessibility of data is at least as important as the right of technologists to individually profit (Lenk, Hoppe, &amp; Adorno, 2007, pp. 91-92).</li>
<li>The unencumbered public availability of processes or information previously under patent protection,whether by design (read: open source software or open specification) or expiration of patent), is considered an unambiguous public good (&#8220;Are Efforts&#8221;, 2001).</li>
<li>Patents which are overly broad—including those which infringe prior art—have an unnecessarily depressive effect upon both technological progress and the economy as a whole.</li>
</ol>
<p>As Bessen and Meurer (2008) note, patent litigation has rapidly outpaced other business-related litigation since the 1980s, second only to copyright litigation, and that mostly due to more or less legitimate claims of filesharing-related infringement (p. 127).</p>
<p>Whether software patents are helpful or ethical at all is more to the point.  Allison, Mann, &amp; Dunn (2007) quote principal witnesses at a 1994 patent hearing: &#8220;Software should not be patented, not because it is difficult to do so, but because it is wrong to do so&#8221;; &#8220;[t]here is absolutely no evidence whatsoever, not a single iota, that software patents have promoted or will promote progress&#8221; (1581).  The authors conclude that policy debate now shies away from the common idea that the patent system is broken and unfair:  the hue and cry, especially from software companies who ostensibly rely on patents, is to require a technical contribution—that is, implementation aside from a theoretical business method (1621-22).</p>
<p>Early patent law recognized that software seemed inherently unpatentable because it was little more than structured math (Guntersdorfer, 2003; Klemens, 2006, p. 4);  mathematical formulae, were they to be subject to such &#8220;protection,&#8221; would be prohibitive to innovation and damage the public good.  Mathematics, fundamentally, isn&#8217;t subject to ownership any more than other means of describing reality, such as physics or chemistry.  Because software patents can describe not simply a method for obtaining a result, but the very idea of obtaining that result—for instance, Stallman&#8217;s example of the patent for credit card payment, irrespective of the code used to construct the process—they have ceased to reward innovation and instead hamper technological progress, deny certain freedoms (to those, like Stallman, who aspire to such principles in software), and have a necessarily depressive effect upon economies and livelihoods, in contravention of principle #6.</p>
<p>Klemens (2006) points out that the very worst patents are often cited as an argument against the ethicality of all software patents:  his favorite example is a patent granted in 2002 for three short lines of JavaScript code, a language available for use since 1995 (p. 2).  It would be unfair, however, to judge all software patents, or the patentability of software, based upon a portfolio of errors by the United State Patent and Trademark Office.  Is there any ethical good that may be derived from software patents broadly?</p>
<p>It is necessary at this point to consider principle #4, which weighs the ambiguous claim of programmers or businesses upon a technology or technological idea against the immeasurable claim of other businesses and the consuming public to interoperability.  This piece is being written in a file format called Open Document Format (compare to Microsoft&#8217;s &#8220;OLE2&#8243; format, used in its popular productivity suite, reflected in &#8220;.doc&#8221; and &#8220;xls&#8221; files), in a free program called OpenOffice.org.  This program also has the ability to open, edit, or create documents in Microsoft&#8217;s proprietary format;  were OpenOffice.org not under the protection of the large software vendor Sun Microsystems, it is likely that the developers of the program would be sued for patent infringement, since Microsoft has a number of patents which ostensibly pertain to the OLE2 document format.</p>
<p>The chilling effect that such a legal situation has upon development of third party programs which can interoperate with Microsoft&#8217;s file format is well-known in software development circles.  It effectively means that Microsoft is remunerated twice:  one stream of revenue comes from the sale of its productivity suite (the quality of which directly affected the ubiquity—and market force—of OLE2 files), and the other—due to patents upon the data structures of OLE2—from companies which choose to license the specification rather than risk legal battles.  </p>
<p>There is little question that Microsoft deserves the first stream of revenue, which is related to a copyrighted product (a &#8220;physical&#8221; good) that it sells;  that some portion of the sales may have to do with the ubiquity (read: business necessity) of its file format is aside from the point.  The fact that the company&#8217;s patents effectively prohibit competition by making interoperability cost-inefficient is, while a net economic good for Microsoft, an ethical downfall for everyone else.  Lawrence Lessig, a well-known proponent of more &#8220;open&#8221; practices pertaining to intellectual property, insists that although official case law has yet to demonstrate the validity of the previous statement as measured by favorable judgements, common sense and observation indicate that these kinds of patents primarily serve as a way to keep &#8220;early innovators&#8221; safe from later, third-party progress (Babcock, 2005).  </p>
<p>Assuming some unquantified validity to Microsoft&#8217;s patents upon its OLE2 format, how does that compare to a public need for unfettered access to interact with that format?  Rawls  argues unequivocally that justice &#8220;does not allow that the sacrifices imposed on a few are outweighed by the larger sum of advantages enjoyed by many&#8221; (1999, p. 3).  In the tradition of Omelas, so Rawl&#8217;s sense of justice is inflexible (or so he supposes) when it comes to the inalienable rights due every man.  Interoperability and the public good, Rawls may argue, are important, but should never be sacrificed if the right of the programmer/inventor to profit from his intellectual labors is to be infringed.</p>
<p>The hypothetical dystopia described has no boundaries:  it is essentially a view of a communistic system in which the right to personal property is negated in favor of public benefit from shared resources.  Though a different argument entirely, such systems have failed to produce thriving communities achieving a critical mass in the lengths to which it will go to redistribute wealth.  However, the argument against software patents is not, at heart, a call for intellectual property to be redistributed to bolster a common good.  Even if the dense calculus of utilitarianism was shown to be unarguably true, no ethical principle mandating the forcible forfeiture of IP is likely to be justified by any mainstream ethicists.  The argument against software patents is that they do not represent intellectual property at all, but rather a manipulation of the legal system to achieve particular economic ends; it is possible, since the criteria do not require implementation, to patent software which hasn&#8217;t been written (Klemens, 2006, pp. 3-5).  </p>
<p>The question initially posed was the degree to which patents are ethical or unethical.  Assuming that Rawls&#8217; theory of justice as morally paramount—as embodied in principle #3—is significantly correct, and understanding the particular vagaries of software and its algorithmic nature, certain conclusions may be drawn.</p>
<p>First, existing copyright laws do well to cover a content creator&#8217;s claim to his or her labor;  these laws cover—and are perfectly sufficient for—the assertion of ownership over computer programs, which are themselves physical expressions/implementations of content.  In this way, the right to personal property, intellectual or otherwise, is unabridged.<br />
Second, the application of this principle into software written under the auspices of business allows proper remuneration for investment, and contributes to overall economic efficiency and therefore a public, moral good.</p>
<p>Third, within this ecosystem of software, patents are extraneous, serving no apparent purpose other than artificially extending the existing copyright protection to cover content which has not been written, cannot be written, or can be written in different ways (and properly so).</p>
<p>Unambiguously, then, software patents are unethical, serving to abridge the rights of content creators to implement general principles in software code, to enter into competition with existing market constituents and improve the market, and to raise the overall quality of the software ecosystem—and, by extension, allow the public benefit from these improvements. </p>
<p class="center">References</p>
<ul>
<li>Allison, J. R., Mann, R. J., &amp; Dunn, A. (2007). Software Patents, Incumbents, and Entry [Electronic version]. <cite>Texas Law Review</cite>, 85(7), 1579-1625. From Business Source Elite (25978301). </li>
<li>Ante, S. E., Brull, S. V., Herman, D. K., &amp; France, M. (2000, August 14). Inside Napster. BusinessWeek, 112-120. Retrieved March 15, 2009, from Business Source Elite (3394425).</li>
<li><cite>Are Efforts to Extend Patent and Copyright Laws Good for Business or Good for Society?</cite> (2001, July 4). Retrieved March 17, 2009, http://knowledge.emory.edu/article.cfm?articleid=363  </li>
<li>Babcock, C. (2005, April 7). Stanford Law Professor Raps Patents As Barrier To Innovation. <cite>InformationWeek</cite>. Retrieved March 26, 2009, http://www.informationweek.com/news/software/showArticle.jhtml?articleID=160502321 </li>
<li>Bessen, J., &amp; Meurer, M. J. (2008). <cite>Patent failure</cite>. Princeton: Princeton University Press. </li>
<li>Guntersdorfer, M. (2003, March 21). <cite>Software Patent Law: United States and Europe Compared</cite>. Retrieved March 17, 2009, http://www.law.duke.edu/journals/dltr/articles/2003dltr0006.html </li>
<li>Heisey, P. W., King, J. L., Rubenstein, K. D., &amp; Shoemaker, R. (2006, March). <cite>Government Patenting and Technology Transfer</cite>. Retrieved April 13, 2009, http://www.ers.usda.gov/publications/err15/err15.pdf </li>
<li>Klemens, B. (2006). <cite>Math you can&#8217;t use: patents, copyright, and software.</cite> Washington, DC: Brookings Institution Press. </li>
<li>Lemos, R. (2004, February 12). <cite>Microsoft probes Windows code leak.</cite> Retrieved March 19, 2009, http://news.cnet.com/2100-7349_3-5158496.html </li>
<li>Lenk, C., Hoppe, N., &amp; Adorno, R. (2007). <cite>Ethics and law of intellectual property.</cite> Burlington: Ashgate. </li>
<li><cite>Patent Asserted Against JPEG Standard Rejected By Patent Office As Result Of PubPat Request: Public Interest Group&#8217;s Review Results in Broadest Claims of Forgent Networks Patent Being Ruled Invalid</cite> (2006, May 26). Retrieved March 16, 2009, http://www.pubpat.org/Chen672Rejected.htm </li>
<li>Rawls, J. (1999). <cite>A theory of justice.</cite> Cambridge: Hardvard University Press. </li>
<li>Schultz, W. J. (2001). <cite>The Moral Conditions of Economic Efficiency.</cite> Cambridge: Cambridge University Press. </li>
<li>Stallman, R. (2005, June 20). Patent absurdity. <cite>The Guardian.</cite> Retrieved March 17, 2009, http://www.guardian.co.uk/technology/2005/jun/20/comment.comment </li>
<li><cite>U.S. Patent Statistics Chart Calendar Years 1963 &#8211; 2008</cite> (2009, March 26). Retrieved March 27, 2009, http://www.uspto.gov/go/taf/us_stat.htm </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2009/04/21/the-ethics-of-software-patents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tracking LZMA efficiency</title>
		<link>http://heliologue.com/2009/02/09/tracking-lzma-efficiency/</link>
		<comments>http://heliologue.com/2009/02/09/tracking-lzma-efficiency/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 04:51:26 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[codecs]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=3580</guid>
		<description><![CDATA[I&#8217;m a big fan of 7-Zip. It isn&#8217;t the best-looking application ever written, but that could be because its creator, Igor Pavlov, is concerned much more with its compression methods than its interface. 7-Zip has its own container format, but more important is the LZMA compression algorithm that Igor wrote and put into the public [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big fan of <a href="http://7-zip.org">7-Zip</a>. It isn&#8217;t the best-looking application ever written, but that could be because its creator, Igor Pavlov, is concerned much more with its compression methods than its interface.  7-Zip has its own container format, but more important is the <a href="http://en.wikipedia.org/wiki/LZMA">LZMA</a> compression algorithm that Igor wrote and put into the public domain.</p>
<p>I decided to do some quick and dirty benchmarks to track the progress of LZMA/7-Zip over time.  I went back as far as Igor supplied binaries, including one from the very old 3.x series.  Rather than test every single release between then and now, I used only &#8220;stable&#8221; releases, with the exception of version 4.65, which is the latest version of any sort, as well as 4.66, which uses an alpha version of Igor&#8217;s new LZMA2 codec (and, as you&#8217;ll see, provides definite performance improvement).</p>
<p>I used Igor&#8217;s Timer utility to time the process (global time was reported).  The corpus in this case was the <a href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2">Linux kernel source, v2.6.28</a>.  I conducted these tests on a RAM disk to eliminate hard disk latency issues (especially for decompressions, which improved by about 25% from my initial HDD-based tests). My rig is a Intel Core 2 Quad Q6600 [2.4Ghz], with 4GB of RAM (one dedicated to the RAM disk), running Vista SP1 x64. </p>
<p>The command line setup was an approximation of the 7-Zip GUI&#8217;s &#8220;ultra&#8221; settings:  <code>-t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on</code>, letting the archiver auto-choose the number of threads to spawn.  <span id="more-3580"></span></p>
<h3>The Data</h3>
<table class="sortable rowstyle-even">
<caption>
		LZMA Efficiency<br />
	</caption>
<thead>
<tr>
<th class="sortable-text">
				7-zip version
			</th>
<th class="sortable-numeric">
				encoding time (s)
			</th>
<th class="sortable-numeric">
				decoding time (s)
			</th>
</tr>
</thead>
<tbody>
<tr>
<td>
				3.13
			</td>
<td>
				541.271
			</td>
<td>
				43.379
			</td>
</tr>
<tr>
<td>
				4.20
			</td>
<td>
				531.457
			</td>
<td>
				44.040
			</td>
</tr>
<tr>
<td>
				4.23
			</td>
<td>
				527.871
			</td>
<td>
				42.425
			</td>
</tr>
<tr>
<td>
				4.32
			</td>
<td>
				341.290
			</td>
<td>
				42.126
			</td>
</tr>
<tr>
<td>
				4.42
			</td>
<td>
				219.451
			</td>
<td>
				42.211
			</td>
</tr>
<tr>
<td>
				4.57
			</td>
<td>
				174.064
			</td>
<td>
				44.163
			</td>
</tr>
<tr>
<td>
				4.62
			</td>
<td>
				170.973
			</td>
<td>
				42.836
			</td>
</tr>
<tr>
<td>
				4.65
			</td>
<td>
				170.917
			</td>
<td>
				43.058
			</td>
</tr>
<tr>
<td>
				4.66 (lzma2)
			</td>
<td>
				126.259
			</td>
<td>
				46.663
			</td>
</tr>
</tbody>
</table>
<h3>The Analysis</h3>
<p><a href="/img/albums/Software/lzma_compression_graph.png" class="right" rel="lightbox" title="Tracking LZMA efficiency"><img src="/img/albums/Software/lzma_compression_graph_thumb.png" alt="LZMA efficiency graph" /></a></p>
<p>Without conducting a more thorough battery of tests on a variety of different configurations, it&#8217;s difficulty to say with certain just <em>where</em> the performance improvements came from, be it better using of threading or multiprocessors, general algorithmic improvements, or something else.  I also don&#8217;t know if the performance increases we see reside in improvements to LZMA itself as Igor was finalizing it, or just the code quality of 7-Zip, which <em>implements</em> LZMA.</p>
<p>In any case, the improvements since 3.13 are very clear (remember that lower is better), at least for compression, and for &#8220;ultra&#8221; settings.  Decompression remained largely similar, which surprised me.  Some of these results might be directly tied to the number and type of files that were compressed in the case:  4.66, for instance, improves decompression speed for uncompressable files, but no such files exist here since it&#8217;s source code.</p>
<p>Hats off to Igor Pavlov for his steady improvement on both a really great compression standard and one of my favorite pieces of software for Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2009/02/09/tracking-lzma-efficiency/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FLAC compile benchmarks</title>
		<link>http://heliologue.com/2008/12/21/flac-compile-benchmarks/</link>
		<comments>http://heliologue.com/2008/12/21/flac-compile-benchmarks/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 16:26:24 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[codecs]]></category>
		<category><![CDATA[FLAC]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=3477</guid>
		<description><![CDATA[FLAC is a cross-platform codec, but when it comes to Windows, one has a pretty wide range of compiles. Some are more optimized than others. I first got the idea for this benchmark when I stumbled upon a native 64-bit FLAC executable for Windows. Curious, I did a quick and dirty test against the canonical [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flac.sf.net">FLAC</a> is a cross-platform codec, but when it comes to Windows, one has a pretty wide range of compiles.  Some are more optimized than others.</p>
<p>I first got the idea for this benchmark when I stumbled upon a native <a href="http://www.hardwarehacks.org/software/x64stuff.xml">64-bit FLAC executable for Windows</a>.  Curious, I did a quick and dirty test against the canonical build for Windows and found that while encoding times were similar, decoding times were considerably faster.</p>
<p>To figure out why this is so (the 64-bitness or something else), I quickly pulled some some additional compiles and benchmarked them against a few different samples.</p>
<p><span id="more-3477"></span></p>
<p>I have three different samples I used, ripped in WAV format as single files:</p>
<ul>
<li><cite>Lateralus</cite>, by Tool</li>
<li><cite>Californication</cite>, by the Red Hot Chili Peppers</li>
<li>Bruckner&#8217;s 9th Symphony, by Giulini/Vienna Philharmonic, 1989</li>
</ul>
<p>I&#8217;ve included a table for each sample, split into encode/decode times and compilation.</p>
<p>The builds I included were:</p>
<ul>
<li>The canonical build from the official <a href="http://flac.sf.net">FLAC website</a></li>
<li>MSVC8 (Microsoft) compile from <a href="http://rarewares.org/lossless.php">RareWares</a></li>
<li>ICL 9.1 (Intel) compile from <a href="http://rarewares.org/lossless.php">RareWares</a></li>
<li>64-bit compile (MSVC?) from <a href="http://www.hardwarehacks.org/software/x64stuff.xml">HardwareHacks 2000</a></li>
</ul>
<p>My test system is a Intel Core 2 Quad Q6600, with 4GB of RAM, running Windows Vista x64 SP1, with all available patches.  The timer used was by Igor Pavlov (the developer of 7-zip).  Reported times are global (as opposed to kernel, user, or process times).</p>
<table class="zebra sortable">
<caption>
		FLAC build benchmarks (time in seconds)<br />
	</caption>
<thead>
<tr>
<th>
				FLAC build
			</th>
<th>
				Action
			</th>
<th>
				canonical
			</th>
<th>
				MSVC8
			</th>
<th>
				ICL9.1
			</th>
<th>
				x64
			</th>
</tr>
</thead>
<tbody>
<tr>
<th rowspan="2" scope="row">
				<cite>Lateralus</cite>
			</th>
<td>
				encode
			</td>
<td>
				140.198
			</td>
<td>
				124.146
			</td>
<td>
				121.821
			</td>
<td>
				135.206
			</td>
</tr>
<tr>
			<!-- spacer for row header--></p>
<td>
				decode
			</td>
<td>
				36.770
			</td>
<td>
				17.098
			</td>
<td>
				16.708
			</td>
<td>
				18.315
			</td>
</tr>
<tr>
<th rowspan="2" scope="row">
				<cite>Bruckner</cite>
			</th>
<td>
				encode
			</td>
<td>
				115.331
			</td>
<td>
				104.708
			</td>
<td>
				107.984
			</td>
<td>
				121.119
			</td>
</tr>
<tr>
			<!-- spacer for row header --></p>
<td>
				decode
			</td>
<td>
				33.384
			</td>
<td>
				33.338
			</td>
<td>
				30.030
			</td>
<td>
				31.387
			</td>
</tr>
<tr>
<th rowspan="2" scope="row">
				<cite>Californication</cite>
			</th>
<td>
				encode
			</td>
<td>
				106.954
			</td>
<td>
				98.283
			</td>
<td>
				90.309
			</td>
<td>
				100.668
			</td>
</tr>
<tr>
			<!-- spacer for row header --></p>
<td>
				decode
			</td>
<td>
				26.973
			</td>
<td>
				25.972
			</td>
<td>
				25.943
			</td>
<td>
				27.238
			</td>
</tr>
</tbody>
</table>
<p>It turns out that the x64&#8242;s advantage when it comes to decoding isn&#8217;t due to its 64-bitness, but probably because it includes some extra optimizations (SSE?) that are inherent ot a 64-bit compilation.</p>
<p>The clear winner in both encoding and decoding is the ICL9.1 compile (I wonder if a 10.1 compile would be even better);  at least, it is so on my machine.  The x64 compile was sometimes better, sometimes worse than the canonical compile.  Clearly, there&#8217;s an early benefit from <em>some</em> optimization (probably SSE routines), along with a small margin of benefit from using Intel&#8217;s superior compiler.  64-bitness is beneficial for FLAC processes only insofar as it necessarily encompasses these routines as part of its instruction set.</p>
<p>If you&#8217;re looking to use a particular build of FLAC, I suggest you mosey on over to RareWares and john33&#8242;s ICL build:  the resulting files are a few KB larger, but the processes itself is noticeably faster.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2008/12/21/flac-compile-benchmarks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GNOME Audio Player Shootout Revisited</title>
		<link>http://heliologue.com/2008/12/19/gnome-audio-player-shootout-revisited/</link>
		<comments>http://heliologue.com/2008/12/19/gnome-audio-player-shootout-revisited/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 16:13:56 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[codecs]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[FLAC]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=2709</guid>
		<description><![CDATA[It&#8217;s been close to two years since I wrote GNOME Audio Player Shootout, a visual and textual comparison of some the best available audio players for the GNOME desktop. As is usually the case in the world of free software, a lot has happened since then (and yet, in a strange way, things have stayed [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/img/tech/gnome.png" alt="GNOME logo" class="right" /></p>
<p>It&#8217;s been close to two years since I wrote <a href="http://heliologue.com/2007/01/18/gnome-audio-player-shootout/">GNOME Audio Player Shootout</a>, a visual and textual comparison of some the best available audio players for the GNOME desktop.</p>
<p>As is usually the case in the world of free software, a lot has happened since then (and yet, in a strange way, things have stayed exactly the same).  I decided to revisit some of those players and see how they&#8217;ve progressed.  Some of them listed last time haven&#8217;t seen any appreciable development, and have been left off.</p>
<p class="alert">
I realize that I am totally ignoring the daemon-based players (read: Music Player Daemon, XMMS2);  this is by design, since those players open up a whole new can of worms.  Suffice it to say that if you&#8217;ve decided on and XMMS2 or MPD-based player and successfully configured it, you probably don&#8217;t need any advice on choosing software.
</p>
<p>The following programs will be covered in this review (development versions):</p>
<ul>
<li>BMPx (0.40.14)</li>
<li>Rhythmbox (0.11.6)</li>
<li>Exaile (2.99.1-svn)</li>
<li>Banshee (1.4.1)</li>
<li>Quod Libet (2.0)</li>
<li>Decibel (1.00)</li>
<li>Songbird (1.0)</li>
<li>Listen (0.6~svn1044)</li>
</ul>
<p>All of the testing was done on a fresh install (and update) of Ubuntu 8.10 in VirtualBox, using a small representative sample of my music collection (some modern, some classical, in Vorbis, MP3, and FLAC).</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2008/12/19/gnome-audio-player-shootout-revisited/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Now Reading for WordPress 2.7</title>
		<link>http://heliologue.com/2008/12/15/now-reading-for-wordpress-27/</link>
		<comments>http://heliologue.com/2008/12/15/now-reading-for-wordpress-27/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 06:56:50 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=3432</guid>
		<description><![CDATA[This page has been moved to a more permanent spot. Please go there.]]></description>
			<content:encoded><![CDATA[<p class="alert">
This page has been moved to <a href="http://heliologue.com/projects/now-reading-reloaded/">a more permanent spot</a>.  Please go there.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2008/12/15/now-reading-for-wordpress-27/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>In defense of open models</title>
		<link>http://heliologue.com/2008/10/22/in-defense-of-open-models/</link>
		<comments>http://heliologue.com/2008/10/22/in-defense-of-open-models/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 20:50:54 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[stupidity]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://heliologue.com/?p=2907</guid>
		<description><![CDATA[Andrew Keen has no idea how open models work. In his latest article, he pontificates that the recent economic downturn is a death knell for community-supported or community-built programs/sites/&#38;c. So how will today&#8217;s brutal economic climate change the Web 2.0 &#8220;free&#8221; economy? It will result in the rise of online media businesses that reward their [...]]]></description>
			<content:encoded><![CDATA[<p>Andrew Keen has no idea how open models work.</p>
<p>In his latest article, he pontificates that the recent economic downturn is a death knell for community-supported or community-built programs/sites/&amp;c.</p>
<blockquote cite="http://www.internetevolution.com/author.asp?section_id=556&#038;doc_id=166342" title="Andrew Keen • Economy to Give Open-Source a Good Thumping">
<p>So how will today&#8217;s brutal economic climate change the Web 2.0 &#8220;free&#8221; economy? It will result in the rise of online media businesses that reward their contributors with cash; it will mean the success of Knol over Wikipedia, Mahalo over Google, TheAtlantic.com over the HuffingtonPost.com, iTunes over MySpace, Hulu over YouTube Inc., Playboy.com over Voyeurweb.com, TechCrunch over the blogosphere, CNN&#8217;s professional journalism over CNN&#8217;s iReporter citizen-journalism&#8230; The hungry and cold unemployed masses aren&#8217;t going to continue giving away their intellectual labor on the Internet in the speculative hope that they might get some &#8220;back end&#8221; revenue. &#8220;Free&#8221; doesn&#8217;t fill anyone&#8217;s belly; it doesn&#8217;t warm anyone up. </p>
</blockquote>
<p>There are really two broad fallacies that need addressing here.  The first is Keen&#8217;s use of the word &#8220;open source,&#8221; which here is a misnomer.  He never mentions Linux, Apache, or other open source programs which always have and will continue to have a dedicated base of programmers, most of whom work on it in their spare time, without any remuneration except personal pride and the esteem of their peers.  It need hardly be noted that an economic downtown is likely to <em>increase</em> interest in open-source software, as it likely reduces operating costs for businesses.</p>
<p><span id="more-2907"></span></p>
<p>No, what Keen means when he says &#8220;open source&#8221; is free-as-in-beer services, often serving liberally-licensed content;  Wikipedia&#8217;s content is not open source (there&#8217;s no source to open), but it <em>is</em> available under the GNU Free Documentation License, which is something like a liberal Creative Commons license.  Perhaps Keen has a sheet of words vaguely associated with Web 2.0 and just likes to throw them around in case his readers are too stupid to know better.</p>
<p>But then comes the bigger fallacy—i.e. in an economic depression, the things that motivated people to contribute to social sites and content servers will vanish entirely.  Nevermind the fact that most of these services don&#8217;t necessarily imply the forfeiture of copyright; or that many already include ways to monetize one&#8217;s content.  No, Keen fundamentally misunderstands why people contribute to things like Wikipedia.  This isn&#8217;t a recent phenomenon borne on the largess of the Web 2.0 bubble;  people didn&#8217;t start contributing to Wikipedia simply because they were so rich from their day jobs that they felt like giving something back.  No, people like being a part of something.  They like attaching their name to good work, free or not.</p>
<p>This is all a very roundabout way of saying that Keen couldn&#8217;t be more wrong;  he apparently is crass enough to believe that anything one does can and should be tied to monetary compensation.  I imagine he gets paid for his articles for Internet Evolution (if he was doing them <i>pro bono</i>, it would certainly speak volumes about his argument);  perhaps he overestimates the value of his labor.</p>
]]></content:encoded>
			<wfw:commentRss>http://heliologue.com/2008/10/22/in-defense-of-open-models/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

