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

<channel>
	<title>The online home of Rufus Pollock &#187; Command Line</title>
	<atom:link href="http://rufuspollock.org/tags/command-line/feed/" rel="self" type="application/rss+xml" />
	<link>http://rufuspollock.org</link>
	<description></description>
	<lastBuildDate>Thu, 09 Feb 2012 20:04:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Datapkg 0.8 Released</title>
		<link>http://rufuspollock.org/2011/02/09/datapkg-0-8-released/</link>
		<comments>http://rufuspollock.org/2011/02/09/datapkg-0-8-released/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 17:48:11 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Open Data]]></category>
		<category><![CDATA[Open Knowledge Foundation]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Shuttleworth Fellow]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://rufuspollock.org/?p=857</guid>
		<description><![CDATA[A new release (<a href="http://ckan.org/milestone/datapkg-0.7">v0.8</a>) of <a href="http://okfn.org/projects/datapkg">datapkg</a>, the tool for distributing, discovering and installing data is out! Release: <a href="http://pypi.python.org/pypi/datapkg">http://pypi.python.org/pypi/datapkg</a> Docs: <a href="http://packages.python.org/datapkg/">http://packages.python.org/datapkg/</a> There&#8217;s a quick getting started section below (also see <a href="http://packages.python.org/datapkg/">the docs</a>). About the release This release brings substantial improvements to the download functionality of datapkg including support for extending the [...]]]></description>
			<content:encoded><![CDATA[<p>A new release (<a href="http://ckan.org/milestone/datapkg-0.7">v0.8</a>) of <a href="http://okfn.org/projects/datapkg">datapkg</a>, the tool for distributing, discovering and installing data is out!</p>

<ul>
<li>Release: <a href="http://pypi.python.org/pypi/datapkg">http://pypi.python.org/pypi/datapkg</a></li>
<li>Docs: <a href="http://packages.python.org/datapkg/">http://packages.python.org/datapkg/</a></li>
</ul>

<p>There&#8217;s a quick getting started section below (also see <a href="http://packages.python.org/datapkg/">the docs</a>).</p>

<h3>About the release</h3>

<p>This release brings substantial improvements to the download functionality of datapkg including support for extending the download system via <a href="http://packages.python.org/datapkg/extending.html">plugins</a>. The full changelog below has more details and here&#8217;s an example of the new download system being used to download material selectively from the <a href="http://ckan.net/package/cofog">COFOG package</a> on <a href="http://ckan.net/">CKAN</a>.</p>

<pre><code># download metadata and all resources from cofog package to current directory
# Resources to retrieve will be selected interactively
download ckan://cofog .

# download all resources
# Note need to quote *
download ckan://name path-on-disk "*"

# download only those resources that have format 'csv' (or 'CSV')
download ckan://name path-on-disk csv
</code></pre>

<p>For more details see the documentation of the download command:</p>

<pre><code>datapkg help download
</code></pre>

<h3>Get started fast</h3>

<pre><code># 1. Install: (requires python and easy_install)
$ easy_install datapkg
# Or, if you don't like easy_install
$ pip install datapkg or even the raw source!

# 2. [optional] Take a look at the manual
$ datapkg man

# 3. Search for something
$ datapkg search ckan:// gold
gold-prices -- Gold Prices in London 1950-2008 (Monthly)

# 4. Get some data
# This will result in a csv file at /tmp/gold-prices/data
$ datapkg download ckan://gold-prices /tmp
</code></pre>

<p><a href="http://packages.python.org/datapkg/">Find out more &raquo;</a> &#8212; including how to create, register and distribute your own &#8216;data packages&#8217;.</p>

<h3>Changelog</h3>

<ul>
<li>ResourceDownloader objects and plugin point (#964)</li>
<li>Refactor PackageDownloader to use ResourceDownloader and support Resource
filtering</li>
<li>Retrieval options for package resourcs (#405). Support selection of
resources to download (on command line or API) via glob style patterns or
user interaction.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2011/02/09/datapkg-0-8-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyWordPress &#8211; Python Library for WordPress</title>
		<link>http://rufuspollock.org/2011/01/05/pywordpress-python-library-for-wordpress/</link>
		<comments>http://rufuspollock.org/2011/01/05/pywordpress-python-library-for-wordpress/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 10:42:15 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Own Work]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://rufuspollock.org/?p=814</guid>
		<description><![CDATA[Announcing <a href="https://bitbucket.org/rgrp/pywordpress">pywordpress</a>, a python interface to WordPress using the WordPress XML-RPC API. Download: <a href="http://pypi.python.org/pypi/pywordpress/">http://pypi.python.org/pypi/pywordpress/</a> Source code: <a href="https://bitbucket.org/rgrp/pywordpress/">https://bitbucket.org/rgrp/pywordpress/</a> Usage Command line Check out the commands:: wordpress.py -h You will need to create a config with the details (url, login) of the wordpress instance you want to work with:: cp config.ini.tmpl config.ini # now [...]]]></description>
			<content:encoded><![CDATA[<p>Announcing <a href="https://bitbucket.org/rgrp/pywordpress">pywordpress</a>, a python interface to WordPress using the WordPress XML-RPC API.</p>

<ul>
<li>Download: <a href="http://pypi.python.org/pypi/pywordpress/">http://pypi.python.org/pypi/pywordpress/</a></li>
<li>Source code: <a href="https://bitbucket.org/rgrp/pywordpress/">https://bitbucket.org/rgrp/pywordpress/</a></li>
</ul>

<h1>Usage</h1>

<h2>Command line</h2>

<p>Check out the commands::</p>

<pre><code>wordpress.py -h 
</code></pre>

<p>You will need to create a config with the details (url, login) of the wordpress
instance you want to work with::</p>

<pre><code>cp config.ini.tmpl config.ini
# now edit away ...
vim config.ini
</code></pre>

<h2>Python library</h2>

<p>Read the code documentation::</p>

<pre><code>&gt;&gt;&gt; from pywordpress import WordPress
&gt;&gt;&gt; help(WordPress)
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2011/01/05/pywordpress-python-library-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Counting Words in a Latex File</title>
		<link>http://rufuspollock.org/2007/08/24/counting-words-in-a-latex-file/</link>
		<comments>http://rufuspollock.org/2007/08/24/counting-words-in-a-latex-file/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 13:04:13 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://www.rufuspollock.org/archives/211</guid>
		<description><![CDATA[Much of this was inspired by <a href="http://ubuntu.wordpress.com/2007/02/07/true-word-count-in-latex/">this blog post</a>. Having tested on my own set of files I would suggest that these methods could be ranked in order of accuracy as: TexCount.pl untex + wc wc pdf file wc $ wc -w file.tex This is very simple but is pretty inaccurate since wc has [...]]]></description>
			<content:encoded><![CDATA[<p>Much of this was inspired by <a href="http://ubuntu.wordpress.com/2007/02/07/true-word-count-in-latex/">this blog post</a>. Having tested on my own set of files I would suggest that these methods could be ranked in order of accuracy as:</p>

<ol>
<li>TexCount.pl</li>
<li>untex + wc</li>
<li>wc</li>
<li>pdf file</li>
</ol>

<h3>wc</h3>

<pre><code>$ wc -w file.tex
</code></pre>

<p>This is very simple but is pretty inaccurate since wc has no awareness of tex commands or mathematics (which results in overcounting) and does not expand things like bibliographies (which results in undercounting). Overall the result is likely to be a substantial overcount.</p>

<h3>Look at the resulting pdf file.</h3>

<pre><code>$ pdftotext file.pdf - | egrep -E '\w\w\w+' | iconv -f ISO-8859-15 -t UTF-8 | wc
</code></pre>

<p>More sophisticated but in my experience results in grossly overestimated wordcounts due to inability to deal with mathematics and issues with pdftotext (lots of words get broken up that shouldn&#8217;t be).</p>

<h3>TexCount.pl</h3>

<p>Get it from: <a href="http://folk.uio.no/einarro/Comp/texwordcount.html">http://folk.uio.no/einarro/Comp/texwordcount.html</a></p>

<p>This seemed to be pretty good.</p>

<h3>untex + wc</h3>

<p>$ untex file.tex | wc</p>

<p>Again likely to overcount for mathematics and fairly limited removal of tex commands (though may undercount due to omission of citation/biblio type stuff).</p>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2007/08/24/counting-words-in-a-latex-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Running OpenOffice from the Command Line on Mac OSX</title>
		<link>http://rufuspollock.org/2007/08/12/running-openoffice-from-the-command-line-on-mac-osx/</link>
		<comments>http://rufuspollock.org/2007/08/12/running-openoffice-from-the-command-line-on-mac-osx/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 20:43:46 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://www.rufuspollock.org/archives/206</guid>
		<description><![CDATA[This is a simple hack to enable you to start OpenOffice and, more importantly, open documents with it from the command line. I&#8217;ve got the standard X port of OpenOffice 2.0 installed, so if you have something different you may need to change the path to soffice given below (to find soffice on your machine [...]]]></description>
			<content:encoded><![CDATA[<p>This is a simple hack to enable you to start OpenOffice and, more importantly, open documents with it from the command line. I&#8217;ve got the standard X port of OpenOffice 2.0 installed, so if you have something different you may need to change the path to soffice given below (to find soffice on your machine try from the command line $ locate soffice):</p>

<p>First let&#8217;s make the script that starts openoffice available in a convenient way e.g. by symlinking into ~/bin or /usr/bin:</p>

<pre><code> $ cd ~/bin
 $ ln -s /Applications/OpenOffice.org\ 2.0.app/Contents/openoffice.org/program/soffice ./
</code></pre>

<p>Now you can do stuff like:</p>

<pre><code> $ soffice -help
</code></pre>

<p>You&#8217;ll see there are different switches which allow you to start a text document, a spreadsheet etc. One annoyance to note is that if you get soffice to load a file by doing:</p>

<pre><code>$ soffice [options] ${filename}
</code></pre>

<p>The application it will use (writer, calc, math &#8230;) will depend solely on the extension of the filename and will ignore any options you give it. So e.g. if you do:</p>

<pre><code>$ soffice -writer some.csv
</code></pre>

<p>Then this will load in calc even though the -writer option was given. For more details (on this very old bug) see:</p>

<p><a href="http://www.openoffice.org/servlets/ReadMsg?list=allbugs&amp;msgNo=94354">http://www.openoffice.org/servlets/ReadMsg?list=allbugs&amp;msgNo=94354</a></p>

<p>Fortunately this isn&#8217;t too much of a problem since the extension mapping is pretty reasonable.</p>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2007/08/12/running-openoffice-from-the-command-line-on-mac-osx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Merging Subversion Repositories Together</title>
		<link>http://rufuspollock.org/2007/03/23/merging-subversion-repositories-together/</link>
		<comments>http://rufuspollock.org/2007/03/23/merging-subversion-repositories-together/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 21:05:31 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://www.rufuspollock.org/archives/171</guid>
		<description><![CDATA[Have repository {start-repo} and want to merge into {old-repo} at {some-dir-name} # if you just wanted trunk replace with this # svndump {start-repo} &#124; svndumpfilter include trunk svnadmin dump {start-repo} &#62; my-dump # copy file to main server and change to web-user svnadmin load --parent-dir {some-dir-name} {old-repo} &#60; my-dump]]></description>
			<content:encoded><![CDATA[<p>Have repository {start-repo} and want to merge into {old-repo} at {some-dir-name}</p>

<pre><code># if you just wanted trunk replace with this
# svndump {start-repo} | svndumpfilter include trunk 
svnadmin dump {start-repo} &gt; my-dump
# copy file to main server and change to web-user
svnadmin load --parent-dir {some-dir-name} {old-repo} &lt; my-dump
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2007/03/23/merging-subversion-repositories-together/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>csv2ascii: display csv as ascii tables</title>
		<link>http://rufuspollock.org/2006/10/13/csv2ascii-display-csv-as-ascii-tables/</link>
		<comments>http://rufuspollock.org/2006/10/13/csv2ascii-display-csv-as-ascii-tables/#comments</comments>
		<pubDate>Fri, 13 Oct 2006 08:22:38 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.thefactz.org/ideas/archives/132</guid>
		<description><![CDATA[Having looked around for a while without success for something that would spit out csv files as ascii tables I decided to hack something together. The result is a small python script <a href="http://www.rufuspollock.org/code/bin/csv2ascii.py">csv2ascii.py</a>. It is currently fairly crude, for example it just truncates cell text which is too long, but I hope I&#8217;ll have [...]]]></description>
			<content:encoded><![CDATA[<p>Having looked around for a while without success for something that would spit out csv files as ascii tables I decided to hack something together. The result is a small python script <a href="http://www.rufuspollock.org/code/bin/csv2ascii.py">csv2ascii.py</a>. It is currently fairly crude, for example it just truncates cell text which is too long, but I hope I&#8217;ll have some more time to improve it soon.</p>

<h3>Example</h3>

<p>Suppose you had the following in a file called example.csv:</p>

<p><pre>
"YEAR","PH","RPH","RPH_1","LN_RPH","LN_RPH_1","HH","LN_HH"
1971,7.8523,43.9168,42.9594,3.7822,3.7602,16185,9.691843<br />
1972,10.5047,55.1134,43.9168370988587,4.0093,3.7822,16397,9.704855
</pre></p>

<p>Running:</p>

<pre><code> $ ./csv2ascii.py example.csv
</code></pre>

<p>Would result in:</p>

<p><pre>
+------+------+------+------+------+------+------+------+
| YEAR |  PH  | RPH  |RPH_1 |LN_RPH|LN_RPH|  HH  |LN_HH |
+------+------+------+------+------+------+------+------+
| 1971 |7.8523|43.916|42.959|3.7822|3.7602|16185 |9.6918|
+------+------+------+------+------+------+------+------+
| 1972 |10.504|55.113|43.916|4.0093|3.7822|16397 |9.7048|
+------+------+------+------+------+------+------+------+
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2006/10/13/csv2ascii-display-csv-as-ascii-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find and Replace Across Multiple Files</title>
		<link>http://rufuspollock.org/2006/09/22/find-and-replace-across-multiple-files/</link>
		<comments>http://rufuspollock.org/2006/09/22/find-and-replace-across-multiple-files/#comments</comments>
		<pubDate>Fri, 22 Sep 2006 11:21:15 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://www.thefactz.org/ideas/archives/122</guid>
		<description><![CDATA[Archiving for my own benefit the results of yet another 5 minute look for how to do find and replace across multiple files from the command line: Use sed: sed -i 's/foo/foo_bar/g' *.html use the old perl hack: perl -w -pi~ -e 's/foo/bar/' [files] Notes: -p: loop, -i edit files in place (backup with extension [...]]]></description>
			<content:encoded><![CDATA[<p>Archiving for my own benefit the results of yet another 5 minute look for how to do find and replace across multiple files from the command line:</p>

<ol>
<li><p>Use sed:</p>

<pre><code>  sed -i 's/foo/foo_bar/g'  *.html
</code></pre></li>
<li><p>use the old perl hack:</p>

<pre><code>  perl -w -pi~ -e 's/foo/bar/' [files]
</code></pre>

<p>Notes: -p: loop, -i edit files in place (backup with extension if supplied), -w enable warnings</p></li>
<li><p>Install rpl</p>

<ul>
<li><a href="http://freshmeat.net/projects/rpl/">http://freshmeat.net/projects/rpl/</a></li>
<li>port install rpl (mac osx)</li>
<li>apt-get install rpl (debian/ubuntu)</li>
</ul></li>
</ol>

<p>Combining either (1) or (2) with <em>find</em> is pretty powerful. E.g. to do a find and replace on all html files in all subdirectories:</p>

<pre><code>     perl -w -pi -e 's/foo/bar/' `find &lt;path&gt; -name '*.html'`
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2006/09/22/find-and-replace-across-multiple-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stephenson&#8217;s: In the beginning was the command line</title>
		<link>http://rufuspollock.org/2006/07/14/stephensons-in-the-beginning-was-the-command-line/</link>
		<comments>http://rufuspollock.org/2006/07/14/stephensons-in-the-beginning-was-the-command-line/#comments</comments>
		<pubDate>Fri, 14 Jul 2006 20:38:59 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Command Line]]></category>

		<guid isPermaLink="false">http://www.thefactz.org/ideas/archives/107</guid>
		<description><![CDATA[Despite its free availability i can&#8217;t find one version formatted in a way I actually like. Anyway here&#8217;s a link to one of the least bad (it&#8217;s plain vanilla html and supposedly a copy of the page Stephenson first posted on his website): <a href="http://steak.place.org/dougo/inthebeginning.html">http://steak.place.org/dougo/inthebeginning.html</a> Published in 1999 and though now a little dated this [...]]]></description>
			<content:encoded><![CDATA[<p>Despite its free availability i can&#8217;t find one version formatted in a way I actually like. Anyway here&#8217;s a link to one of the least bad (it&#8217;s plain vanilla html and supposedly a copy of the page Stephenson first posted on his website): <a href="http://steak.place.org/dougo/inthebeginning.html">http://steak.place.org/dougo/inthebeginning.html</a></p>

<p>Published in 1999 and though now a little dated this is still a great essay. It&#8217;s full of Stephenson&#8217;s wit and detailed down-to-earth explanations. My favourite part is the brilliant and hilarious &#8216;os as car&#8217; metaphor:</p>

<blockquote>
  <p>The analogy between cars and operating systems is not half bad, and so let me run with it for a moment, as a way of giving an executive summary of our situation today.</p>
  
  <p>Imagine a crossroads where four competing auto dealerships are situated. One of them (Microsoft) is much, much bigger than the others. It started out years ago selling three-speed bicycles (MS-DOS); these were not perfect, but they worked, and when they broke you could easily fix them.</p>
  
  <p>There was a competing bicycle dealership next door (Apple) that one day began selling motorized vehicles&#8211;expensive but attractively styled cars with their innards hermetically sealed, so that how they worked was something of a mystery.</p>
  
  <p>The big dealership responded by rushing a moped upgrade kit (the original Windows) onto the market. This was a Rube Goldberg contraption that, when bolted onto a three-speed bicycle, enabled it to keep up, just barely, with Apple-cars. The users had to wear goggles and were always picking bugs out of their teeth while Apple owners sped along in hermetically sealed comfort, sneering out the windows. But the Micro-mopeds were cheap, and easy to fix compared with the Apple-cars, and their market share waxed.</p>
  
  <p>Eventually the big dealership came out with a full-fledged car: a colossal station wagon (Windows 95). It had all the aesthetic appeal of a Soviet worker housing block, it leaked oil and blew gaskets, and it was an enormous success. A little later, they also came out with a hulking off-road vehicle intended for industrial users (Windows NT) which was no more beautiful than the station wagon, and only a little more reliable.</p>
  
  <p>Since then there has been a lot of noise and shouting, but little has changed. The smaller dealership continues to sell sleek Euro-styled sedans and to spend a lot of money on advertising campaigns. They have had GOING OUT OF BUSINESS! signs taped up in their windows for so long that they have gotten all yellow and curly. The big one keeps making bigger and bigger station wagons and ORVs.</p>
  
  <p>On the other side of the road are two competitors that have come along more recently.</p>
  
  <p>One of them (Be, Inc.) is selling fully operational Batmobiles (the BeOS). They are more beautiful and stylish even than the Euro-sedans, better designed, more technologically advanced, and at least as reliable as anything else on the market&#8211;and yet cheaper than the others.</p>
  
  <p>With one exception, that is: Linux, which is right next door, and which is not a business at all. It&#8217;s a bunch of RVs, yurts, tepees, and geodesic domes set up in a field and organized by consensus. The people who live there are making tanks. These are not old-fashioned, cast-iron Soviet tanks; these are more like the M1 tanks of the U.S. Army, made of space-age materials and jammed with sophisticated technology from one end to the other. But they are better than Army tanks. They&#8217;ve been modified in such a way that they never, ever break down, are light and maneuverable enough to use on ordinary streets, and use no more fuel than a subcompact car. These tanks are being cranked out, on the spot, at a terrific pace, and a vast number of them are lined up along the edge of the road with keys in the ignition. Anyone who wants can simply climb into one and drive it away for free.</p>
  
  <p>Customers come to this crossroads in throngs, day and night. Ninety percent of them go straight to the biggest dealership and buy station wagons or off-road vehicles. They do not even look at the other dealerships.</p>
  
  <p>Of the remaining ten percent, most go and buy a sleek Euro-sedan, pausing only to turn up their noses at the philistines going to buy the station wagons and ORVs. If they even notice the people on the opposite side of the road, selling the cheaper, technically superior vehicles, these customers deride them cranks and half-wits.</p>
  
  <p>The Batmobile outlet sells a few vehicles to the occasional car nut who wants a second vehicle to go with his station wagon, but seems to accept, at least for now, that it&#8217;s a fringe player.</p>
  
  <p>The group giving away the free tanks only stays alive because it is staffed by volunteers, who are lined up at the edge of the street with bullhorns, trying to draw customers&#8217; attention to this incredible situation. A typical conversation goes something like this:</p>
  
  <p>Hacker with bullhorn: &#8220;Save your money! Accept one of our free tanks! It is invulnerable, and can drive across rocks and swamps at ninety miles an hour while getting a hundred miles to the gallon!&#8221;</p>
  
  <p>Prospective station wagon buyer: &#8220;I know what you say is true&#8230;but&#8230;er&#8230;I don&#8217;t know how to maintain a tank!&#8221;</p>
  
  <p>Bullhorn: &#8220;You don&#8217;t know how to maintain a station wagon either!&#8221;</p>
  
  <p>Buyer: &#8220;But this dealership has mechanics on staff. If something goes wrong with my station wagon, I can take a day off work, bring it here, and pay them to work on it while I sit in the waiting room for hours, listening to elevator music.&#8221;</p>
  
  <p>Bullhorn: &#8220;But if you accept one of our free tanks we will send volunteers to your house to fix it for free while you sleep!&#8221;</p>
  
  <p>Buyer: &#8220;Stay away from my house, you freak!&#8221;</p>
  
  <p>Bullhorn: &#8220;But&#8230;&#8221;</p>
  
  <p>Buyer: &#8220;Can&#8217;t you see that everyone is buying station wagons?&#8221;</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2006/07/14/stephensons-in-the-beginning-was-the-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wdiff: compare two files word by word</title>
		<link>http://rufuspollock.org/2006/07/14/wdiff-compare-two-files-word-by-word/</link>
		<comments>http://rufuspollock.org/2006/07/14/wdiff-compare-two-files-word-by-word/#comments</comments>
		<pubDate>Fri, 14 Jul 2006 20:11:59 +0000</pubDate>
		<dc:creator>Rufus Pollock</dc:creator>
				<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.thefactz.org/ideas/archives/106</guid>
		<description><![CDATA[debian/ubuntu: apt-get install wdiff macosx: fink install wdiff From apt-cache show: wdiff&#8217; is a front-end to GNU diff. It compares two files, finding which words have been deleted or added to the first in order to create the second. It has many output formats and interacts well with terminals and pagers (notably with less').wdiff&#8217; is [...]]]></description>
			<content:encoded><![CDATA[<p>debian/ubuntu: apt-get install wdiff
macosx: fink install wdiff</p>

<p>From apt-cache show:</p>

<p>wdiff&#8217; is a front-end to GNU <code>diff</code>.  It compares two files, finding which words have been deleted or added to the first in order to create the second.  It has many output formats and interacts well with terminals and pagers (notably with <code>less').</code>wdiff&#8217; is particularly useful when two texts differ only by a few words and paragraphs have been refilled.</p>
]]></content:encoded>
			<wfw:commentRss>http://rufuspollock.org/2006/07/14/wdiff-compare-two-files-word-by-word/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

