<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Dan Siemon &#187; Linux</title>
	<atom:link href="http://www.coverfire.com/archives/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.coverfire.com</link>
	<description>Thoughts and musings</description>
	<lastBuildDate>Wed, 21 Jul 2010 00:39:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/ca/</creativeCommons:license>		<item>
		<title>Linux x86_64 and Javascript</title>
		<link>http://www.coverfire.com/archives/2010/03/29/linux-x86_64-and-javascript/</link>
		<comments>http://www.coverfire.com/archives/2010/03/29/linux-x86_64-and-javascript/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 02:45:39 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/?p=686</guid>
		<description><![CDATA[The competition between browsers in the area of Javascript performance has led to some pretty dramatic performance increases in the last couple of years. A lot of this has been accomplished through Javascript just in time (JIT) compilers. What JITs &#8230; <a href="http://www.coverfire.com/archives/2010/03/29/linux-x86_64-and-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="background-color: #ffffff;">The competition between browsers in the area of Javascript performance has led to some pretty dramatic performance increases in the last couple of years. A lot of this has been accomplished through Javascript just in time (JIT) compilers. What JITs do is convert the Javascript into native instructions which execute a lot faster than more abstract forms. The one downside to this approach is that each native architecture must be supported to get the speed boost.</span></p>
<p>If you follow Javascript performance you know that recent versions of Firefox have a JIT. What you may not know is that there is no JIT in Firefox for x86_64. This isn&#8217;t that big of a problem for Windows since there are so few 64-bit windows users but Linux distributions have been native 64-bit for quite some time. So if you&#8217;ve installed a 64-bit version of your faviourite Linux distribution you are getting far slower Javascript performance in Firefox than if you had installed the i686 version. How much slower?</p>
<p>The following benchmarks were executed on an i7-930 running Fedora 12, Firefox 3.5.8 and Epiphany 2.28.2. The benchmarks I used are the <a title="SunSpider" href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a> and <a title="V8 Javascript benchmark" href="http://v8.googlecode.com/svn/data/benchmarks/v5/run.html">V8</a> Javascript benchmarks.</p>
<table>
<tbody>
<tr>
<td>Browser/arch</td>
<td>V8 (higher is better)</td>
<td>SunSpider (lower is better)</td>
</tr>
<tr>
<td>Firefox i686 PAE</td>
<td>402</td>
<td>1002.6ms</td>
</tr>
<tr>
<td>Firefox x86_64</td>
<td>277</td>
<td>2131.2ms</td>
</tr>
<tr>
<td>Epiphany x86_64</td>
<td>887</td>
<td>1261.0ms</td>
</tr>
</tbody>
</table>
<p>These results show that the Javascript performance of i686 Firefox is a lot better than x86_64. The Epiphany web browser is based on Webkit which, based on these results, I&#8217;m guessing does have a x86_64 JIT.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2010/03/29/linux-x86_64-and-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux SFQ experimentation</title>
		<link>http://www.coverfire.com/archives/2009/06/28/linux-sfq-experimentation/</link>
		<comments>http://www.coverfire.com/archives/2009/06/28/linux-sfq-experimentation/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 22:27:30 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/?p=622</guid>
		<description><![CDATA[I&#8217;ve been doing some more experimentation with Linux QoS configurations using my ping-exp utility. Today I noticed that whenever I add a SFQ to the configuration there are large latency spikes. After a bit of digging it appears that these &#8230; <a href="http://www.coverfire.com/archives/2009/06/28/linux-sfq-experimentation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing some more experimentation with Linux QoS configurations using my <a title="ping-exp: Ping experimentation tool" href="http://www.coverfire.com/archives/2009/05/18/ping-exp-ping-experiment-utility/">ping-exp</a> utility. Today I noticed that whenever I add a <a title="Linux classless queueing disciplines" href="http://lartc.org/howto/lartc.qdisc.classless.html">SFQ</a> to the configuration there are large latency spikes. After a bit of digging it appears that these spikes happen when the SFQ changes its flow hash. This occurs every perturb interval as configured when the SFQ is created.</p>
<p>Below are the results from a couple experiments which show this behavior. For both experiments I had two outbound ping floods of MTU sized packets. This saturated the outbound link. The experiment itself pinged three other hosts. I made sure to use four distinct hosts (one for flood, three for the experiment) to avoid collisions in the SFQs flow hash.</p>
<p>The PNGs below are not ideal for detailed inspection of the graphs. However, you can also download the data files from the experiment and load them using <a title="ping-exp" href="http://www.coverfire.com/archives/2009/05/18/ping-exp-ping-experiment-utility/">ping-exp</a>. This allows zooming in on the graph. See the links at the end.</p>
<div id="attachment_623" class="wp-caption alignnone" style="width: 610px"><a href="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb5.png"><img class="size-medium wp-image-623 " title="HTB SFQ limit 10 perturb 5" src="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb5-600x360.png" alt="HTB SFQ limit 10 perturb 5" width="600" height="360" /></a><p class="wp-caption-text">HTB SFQ limit 10 perturb 5</p></div>
<p>The above graph is based on an experiment where the perturb value was set to five seconds. Although the large latency spikes do not occur at every five second interval, when they do occur they are on the five second grid.</p>
<div id="attachment_624" class="wp-caption alignnone" style="width: 610px"><a href="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb20.png"><img class="size-medium wp-image-624 " title="HTB SFQ limit 10 perturb 20" src="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb20-600x360.png" alt="HTB SFQ limit 10 perturb 20" width="600" height="360" /></a><p class="wp-caption-text">HTB SFQ limit 10 perturb 20</p></div>
<p>The second experiment used a perturb time of twenty seconds. Again, the latency spikes do not occur every twenty seconds but they do occur on the twenty second grid.</p>
<p>During the experiment I ran a packet capture to make sure there wasn&#8217;t any activity that might skew the results. The amount of captured traffic was very small.</p>
<p>The network I performed this experiment on consists of a P3-450 Linux gateway where the QoS configuration is applied to the ppp0 device. The kernel version is 2.6.27.24-170.2.68.fc10.i686. A host behind the gateway was used to generate the ping floods and run ping-exp.</p>
<p><strong>Configuration and data files</strong></p>
<p><a href="http://www.coverfire.com/wp-content/uploads/2009/06/tc-htb-sfq10-perturb5.sh">HTB SFQ limit 10 perturb 5 script</a></p>
<p><a href="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb5.data"></a><a href="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb5.data">HTB SFQ limit 10 perturb 5 ping-exp data file</a></p>
<p><a href="http://www.coverfire.com/wp-content/uploads/2009/06/tc-htb-sfq10-perturb20.sh">HTB SFQ limit 10 perturb 20 script</a></p>
<p><a href="http://www.coverfire.com/wp-content/uploads/2009/06/htb-sfq10-perturb20.data">HTB SFQ limit 10 perturb 20 ping-exp data file</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2009/06/28/linux-sfq-experimentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ping-exp: Ping experiment utility</title>
		<link>http://www.coverfire.com/archives/2009/05/18/ping-exp-ping-experiment-utility/</link>
		<comments>http://www.coverfire.com/archives/2009/05/18/ping-exp-ping-experiment-utility/#comments</comments>
		<pubDate>Mon, 18 May 2009 17:36:26 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/?p=579</guid>
		<description><![CDATA[Recently I&#8217;ve been playing with Linux&#8217;s QoS features in order to make my home Internet service a little better. Since I&#8217;m primarily interested in latency I used ping to benchmark the various configurations. This works reasonably well but it quickly &#8230; <a href="http://www.coverfire.com/archives/2009/05/18/ping-exp-ping-experiment-utility/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been playing with Linux&#8217;s QoS features in order to make my home Internet service a little better. Since I&#8217;m primarily interested in latency I used ping to benchmark the various configurations. This works reasonably well but it quickly becomes hard to compare the results.</p>
<p>So I decided to build a tool to perform several ping experiments, store the results and graph them. The result of this work is <a title="ping-exp" href="http://git.coverfire.com/?p=ping-exp.git;a=summary">ping-exp</a>.</p>
<p>At present ping-exp can vary the destination host name as well as the TOS field. The interval between pings and total number of pings is globally configurable. The results can be written to a file to be loaded later, output to a PNG or both. Line and scatter plots are supported. When not writing the image to a file ping-exp displays the graph using Matplotlib&#8217;s default graph viewer. This allows zooming in on interesting parts of the graph. In the future I&#8217;d like to add the ability to specify the ping packet size.</p>
<p>As an aside, Python and <a title="Matplotlib" href="http://matplotlib.sourceforge.net/">Matplotlib</a> make this kind of stuff so much fun.</p>
<p>Below are a few graphs created by <a title="ping-exp" href="http://git.coverfire.com/?p=ping-exp.git;a=summary">ping-exp</a>.</p>
<div id="attachment_581" class="wp-caption alignnone" style="width: 650px"><a href="http://www.coverfire.com/wp-content/uploads/2009/05/blog3.png"><img class="size-full wp-image-581 " title="ping-exp example #1" src="http://www.coverfire.com/wp-content/uploads/2009/05/blog3.png" alt="ping-exp example #1" width="640" height="384" /></a><p class="wp-caption-text">ping-exp example #1</p></div>
<div id="attachment_582" class="wp-caption alignnone" style="width: 650px"><a href="http://www.coverfire.com/wp-content/uploads/2009/05/blog1.png"><img class="size-full wp-image-582 " title="ping-exp example #2" src="http://www.coverfire.com/wp-content/uploads/2009/05/blog1.png" alt="ping-exp example #2" width="640" height="384" /></a><p class="wp-caption-text">ping-exp example #2</p></div>
<div id="attachment_583" class="wp-caption alignnone" style="width: 650px"><a href="http://www.coverfire.com/wp-content/uploads/2009/05/blog2.png"><img class="size-full wp-image-583 " title="ping-exp example #3" src="http://www.coverfire.com/wp-content/uploads/2009/05/blog2.png" alt="ping-exp example #3" width="640" height="384" /></a><p class="wp-caption-text">ping-exp example #3</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2009/05/18/ping-exp-ping-experiment-utility/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux/Fedora PPPoE problems and solutions</title>
		<link>http://www.coverfire.com/archives/2009/04/19/linuxfedora-pppoe-problems-and-solutions/</link>
		<comments>http://www.coverfire.com/archives/2009/04/19/linuxfedora-pppoe-problems-and-solutions/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 02:53:32 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PPP]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/?p=518</guid>
		<description><![CDATA[This weekend I&#8217;ve been doing some network experimentation on my little DSL connection. I&#8217;ve learned a couple of things the hard way so I figured a quick blog post is in order in the hopes that it will save someone &#8230; <a href="http://www.coverfire.com/archives/2009/04/19/linuxfedora-pppoe-problems-and-solutions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This weekend I&#8217;ve been doing some network experimentation on my little DSL connection. I&#8217;ve learned a couple of things the hard way so I figured a quick blog post is in order in the hopes that it will save someone else time.</p>
<h1>PPP interface errors</h1>
<p>Over the last while my Internet connection has been a little slow. I noticed that there were occasionally packet drops but I didn&#8217;t take the time to figure out where they were occurring.  The testing I was doing this weekend was very sensitive to packet loss so I had to get to the bottom of this.</p>
<p>There were two symptoms. The first was a bunch of log entries like the following.</p>
<pre>Apr 19 12:03:21 titan pppoe[26690]: Bad TCP checksum 109c
Apr 19 12:10:35 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:10:35 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:10:36 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:10:36 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:24:50 titan pppoe[26690]: Bad TCP checksum 3821
Apr 19 12:31:54 titan pppoe[26690]: Bad TCP checksum 9aeb
Apr 19 12:33:22 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:33:49 titan pppd[26689]: Protocol-Reject for unsupported protocol 0xb00
Apr 19 12:33:57 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x2fe5
Apr 19 12:33:58 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:01 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:02 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:12 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x58e6
Apr 19 12:34:14 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:17 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:27 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:29 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:30 titan pppd[26689]: Protocol-Reject for unsupported protocol 0xb00
Apr 19 12:34:31 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x800
Apr 19 12:34:33 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x0
Apr 19 12:34:36 titan pppd[26689]: Protocol-Reject for unsupported protocol 0x7768</pre>
<p>The bad TCP checksum entries hinted at some kind of packet corruption. However, I didn&#8217;t know if this was coming from packets being transmitted or received. Since I don&#8217;t know the inner workings of PPP as well as I&#8217;d like, the Protocol-Reject messages were harder to get a handle on. I grabbed a capture on the Ethernet interface underlying ppp0 so I could look at the PPP messages in Wireshark.</p>
<div class="clearleft"></div>
<div id="attachment_519" class="wp-caption alignleft" style="width: 259px"><img class="size-full wp-image-519" title="Suspect PPP message" src="http://www.coverfire.com/wp-content/uploads/2009/04/ppp-unknown.png" alt="PPP Unknown protocol" width="249" height="218" /><p class="wp-caption-text">Suspect PPP message</p></div>
<div class="clearleft"></div>
<p>My PPPoE client sent a message with the protocol field set to 0. Wireshark doesn&#8217;t know what 0 is supposed to mean.</p>
<div class="clearleft"></div>
<div id="attachment_520" class="wp-caption alignleft" style="width: 297px"><img class="size-full wp-image-520" title="PPP rejection message" src="http://www.coverfire.com/wp-content/uploads/2009/04/ppp-reject.png" alt="PPP reject" width="287" height="331" /><p class="wp-caption-text">PPP rejection message</p></div>
<div class="clearleft"></div>
<p>And the remote PPPoE device is sending a message back rejecting the transmitted message. And it&#8217;s even nice enough to return the entire payload thereby wasting download bandwidth as well. From this packet capture I became pretty confident that the problem was on my end not the ISP&#8217;s. After this I wasted a bunch of time playing around with the clamp TCP MSS PPP option because the data size in the above messages (1412) matched clamp TCP MSS setting in my PPP interface configuration file.</p>
<p>The second symptom was a large number of receive errors on the ppp0 interface &#8211; the underlying Ethernet interface did not have any errors. Opposite to the PPP errors above, the receive errors made it look like the problem was in the PPP messages being received by my PPPoE client.</p>
<p>After several unsuccessful theories I finally figured out what the problem was. The PPPoE implementation on Linux has two modes: synchronous and asynchronous. Synchronous mode uses less CPU but requires a fast computer. I guess the P3-450 that I use as a gateway doesn&#8217;t qualify as fast because as soon as I switched to the asyncronous mode all of the errors went away.</p>
<p>Fixing the problem was good but this still didn&#8217;t make sense to me because I&#8217;ve been using this computer as a gateway for years. Then I discovered <a title="Fedora PPPoE bug" href="https://bugzilla.redhat.com/show_bug.cgi?id=475155">this Fedora bug</a>. It turns out that Fedora 10 shipped with a version of system-config-network which contained a bug that defaulted all PPPoE connections to synchronous mode. This bug has since been fixed and pushed out to all Fedora users but that didn&#8217;t fix the problem for me because the PPP connection configuration was already generated.</p>
<p>In summary, this was a real pain but I did learn more about PPP than I&#8217;ve ever had reason to in the past.</p>
<h1>Dropping PPP connections</h1>
<p>Some of the experimentation I&#8217;ve been doing this weekend required completely congesting the upload channel of my DSL connection. I don&#8217;t just mean a bunch of TCP uploads; this doesn&#8217;t cause any problems. What I was doing is running three copies of the following.</p>
<pre>ping -f -s 1450 alpha.coverfire.com</pre>
<p>This generates significantly more traffic than my little 768Kbps upload channel can handle. During these tests I noticed that occasionally the PPPoE connection would die and reconnect. Examples of the log entries associated with these events are below.</p>
<pre>
Apr 19 20:02:31 titan pppd[15627]: No response to 3 echo-requests
Apr 19 20:02:31 titan pppd[15627]: Serial link appears to be disconnected.
</pre>
<p>Since I had already been looking at PPP packet captures in Wireshark I recognized the following.</p>
<div class="clearleft"></div>
<div id="attachment_522" class="wp-caption alignleft" style="width: 477px"><img class="size-full wp-image-522" title="PPP echo" src="http://www.coverfire.com/wp-content/uploads/2009/04/ppp-echo.png" alt="PPP echo" width="467" height="89" /><p class="wp-caption-text">PPP echo</p></div>
<div class="clearleft"></div>
<p>It appears that too much upload traffic causes enough congestion that the PPP echos fail and the PPP connection is dropped after a timeout. I would have thought the PPP daemon would prioritize something like this over upper layer packets but nevertheless this appears to be the case. For the purposes of my testing this problem was easy to avoid by modifying the following lines in /etc/sysconfig/network-scripts/ifcfg-INTERFACE. I increased the failure count from 3 to 10.</p>
<pre>LCP_FAILURE=10
LCP_INTERVAL=20</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2009/04/19/linuxfedora-pppoe-problems-and-solutions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Magazine titles and operating systems</title>
		<link>http://www.coverfire.com/archives/2008/02/10/magazine-titles-and-operating-systems/</link>
		<comments>http://www.coverfire.com/archives/2008/02/10/magazine-titles-and-operating-systems/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 20:20:35 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/archives/2008/02/10/magazine-titles-and-operating-systems/</guid>
		<description><![CDATA[I little while ago I was standing in front of the computer magazine section at my local Chapters when I noticed something interesting. There were three magazines with &#8220;Windows&#8221; in the title, three with &#8220;Mac&#8221; in the title, and four &#8230; <a href="http://www.coverfire.com/archives/2008/02/10/magazine-titles-and-operating-systems/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I little while ago I was standing in front of the computer magazine section at my local <a href="http://chapters.ca" title="Chapters">Chapters</a> when I noticed something interesting. There were three magazines with &#8220;Windows&#8221; in the title, three with &#8220;Mac&#8221; in the title, and four with &#8220;Linux&#8221; in the title. Of course this is hardly statistically significant in terms of the magazine industry as a whole but it does show how Linux is becoming much more mainstream.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2008/02/10/magazine-titles-and-operating-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>End-to-end in standards and software</title>
		<link>http://www.coverfire.com/archives/2008/01/28/end-to-end-in-standards-and-software/</link>
		<comments>http://www.coverfire.com/archives/2008/01/28/end-to-end-in-standards-and-software/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 04:00:15 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software development]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/archives/2008/01/28/end-to-end-in-standards-and-software/</guid>
		<description><![CDATA[Two things. Both relate to Microsoft but that is just by coincidence. The first Apparently IE8 will allow the HTML author to specify the name and version number of the browser that the page was designed for. For example, the &#8230; <a href="http://www.coverfire.com/archives/2008/01/28/end-to-end-in-standards-and-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Two things. Both relate to Microsoft but that is just by coincidence.</p>
<h2>The first</h2>
<p>Apparently IE8 will allow the HTML author to <a href="http://blog.case.edu/jms18/2008/01/27/ie_8_something_web_indigestion_ensued" title="IE 8 something">specify the name and version number</a> of the browser that the page was designed for. For example, the author can add a meta tag that says essentially &#8220;IE6&#8243;. IE8 will see this tag and switch to rendering pages like IE6 does. Apparently this came about because IE7 became more standards compliant thereby &#8216;breaking&#8217; many pages, especially those on intranets which require the use of IE. The new browser version tag will allow MS to update the browser engine without breaking old pages. As a result they will be forced to maintain the old broken HTML rendering engine (or at least its behavior) for a very long time. This will consume development resources that could otherwise be put into improving IE. It will also increase the size, complexity and undoubtedly the number of bugs. As for the pages broken by newer more standards compliant browsers, what is their value? Any information in a corporate Intranet or otherwise that has value will be updated to retain its value. If no one bothers to update the page is was probably nearly worthless anyway. Also, most of the HTML pages now in use are generated by a templating system of some kind. It&#8217;s not like each and every page will have to be edited by hand.</p>
<h2>The second</h2>
<p>The Linux kernel development process is notorious for improving (breaking) the kernel&#8217;s internal driver APIs. This means that a driver written for version 2.6.x might not even compile against 2.6.x+1 let alone be binary compatible. This of course causes all kinds of trouble for companies not willing to open source their drivers. However, the advantages of this process are huge. It is completely normal that during the development process the author will learn a lot about how the particular problem can be solved. By allowing the internal APIs to change the Linux kernel development model allows the authors to apply this new found knowledge and not be slowed down by past mistakes. As I already mentioned this causes problems for binary only kernel drivers but if the product has value the manufacturer will update the driver to work with the new kernel release. If it doesn&#8217;t have value the driver it won&#8217;t get updated and the kernel doesn&#8217;t have to carry around the baggage of supporting the old inferior design. How does this relate to Microsoft? From <a href="http://www.kroah.com/log/linux/ols_2006_keynote.html" title="OLS 2006 keynote">Greg Kroah-Hartman</a>:</p>
<blockquote><p>Now Windows has also rewritten their USB stack at least 3 times, with Vista, it might be 4 times, I haven&#8217;t taken a look at it yet.  But each time they did a rework, and added new functions and fixed up older ones, they had to keep the old api functions around, as they have taken the stance that they can not break backward compatibility due to their stable API viewpoint.  They also don&#8217;t have access to the code in all of the different drivers, so they can&#8217;t fix them up.  So now the Windows core has all 3 sets of API functions in it, as they can&#8217;t delete things.  That means they maintain the old functions, and have to keep them in memory all the time, and it takes up engineering time to handle all of this extra complexity.  That&#8217;s their business decision to do this, and that&#8217;s fine, but with Linux, we didn&#8217;t make that decision, and it helps us remain a lot smaller, more stable, and more secure.</p></blockquote>
<h2>So what was the point?</h2>
<p>I don&#8217;t know what to make of these two little stories but the later has been bothering me for some time. Where does the responsibility for dealing with change belong? The Internet has taught us that we should push as much work as possible to the ends of the network. The alternative is rapidly growing complexity and inflexibility in the core. It seems to me that this applies to both of the situations I outlined here as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2008/01/28/end-to-end-in-standards-and-software/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>scponly, rsync and Fedora</title>
		<link>http://www.coverfire.com/archives/2007/12/30/scponly-rsync-and-fedora/</link>
		<comments>http://www.coverfire.com/archives/2007/12/30/scponly-rsync-and-fedora/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 06:18:21 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/archives/2007/12/30/scponly-rsync-and-fedora/</guid>
		<description><![CDATA[A few years ago I wrote about the backup script that I use to do daily and weekly backups of my computers. Since this script must run unattended it makes use of a passphrase-less SSH key. The SSH key in &#8230; <a href="http://www.coverfire.com/archives/2007/12/30/scponly-rsync-and-fedora/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few years ago <a href="http://www.coverfire.com/archives/2004/08/10/secure-remote-backup/" title="Secure remote backups">I wrote about the backup script</a> that I use to do daily and weekly backups of my computers. Since this script must run unattended it makes use of a passphrase-less SSH key. The SSH key in question only exists on my main workstation and is used to login as a user which does not own any other files. While this isn&#8217;t a big security problem it would be nice to limit the privileges of this user. To this end I started using <a href="http://sublimation.org/scponly/wiki/index.php/Main_Page" title="scponly">scponly</a> some time ago. Scponly is a restricted shell which limits a logged in user to only executing a few commands such as scp, sftp and rsync. This small set of available programs greatly reduces the chances that the user will be able to find a local exploit. Scponly is already packaged for Fedora so installing it is simple.</p>
<pre>yum install scponly</pre>
<p>Setting an user&#8217;s shell to scponly is accomplished with the usermod command.</p>
<pre>usermod -s /usr/bin/scponly backup</pre>
<p>Like any shell, scponly must also be added to /etc/shells. Just add &#8220;/usr/bin/scponly&#8221; (without the quotes) to the end of this file.</p>
<p>As I mentioned <a href="http://www.coverfire.com/archives/2004/08/10/secure-remote-backup/" title="Backup script">when describing the backup script</a>, the script works great except for large amounts of data such as media collections.  Over time my photo collection has grown to over nine thousand images and now consumes more than eighteen gigabytes of disk space. So today I decided to cron up <a href="http://samba.anu.edu.au/rsync/" title="rsync">rsync</a> to synchronize my photos to the same location where my backups are sent every night. Unlike my backup script, rsync will only send the changes to the remote server not the entire archive.</p>
<p>After much debugging I discovered that the most recently released version of scponly does not work with rsync. The <a href="https://lists.ccs.neu.edu/pipermail/scponly/2006-March/001270.html" title="scponly and rsync problem thread">thread where this problem was first discussed</a> started in March 2006. More related posts can be found in subsequent months. Fortunately the scponly authors have fixed this bug in their CVS repository so I built a RPM for the CVS version.</p>
<p><a href="http://www.coverfire.com/files/scponly-4.7CVS20071229-1.fc8.x86_64.rpm" title="scponly-4.7CVS20071229-1.fc8.x86_64.rpm">scponly-4.7CVS20071229-1.fc8.x86_64.rpm</a></p>
<p><a href="http://www.coverfire.com/files/scponly-debuginfo-4.7CVS20071229-1.fc8.x86_64.rpm" title="scponly-debuginfo-4.7CVS20071229-1.fc8.x86_64.rpm">scponly-debuginfo-4.7CVS20071229-1.fc8.x86_64.rpm</a></p>
<p><a href="http://www.coverfire.com/files/scponly-4.7CVS20071229-1.fc8.src.rpm" title="scponly-4.7CVS20071229-1.fc8.src.rpm">scponly-4.7CVS20071229-1.fc8.src.rpm</a></p>
<p>This package successfully upgrades the scponly package provided by Fedora. Hopefully these RPMs are useful to someone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2007/12/30/scponly-rsync-and-fedora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Downloading source RPMs in Fedora</title>
		<link>http://www.coverfire.com/archives/2007/12/29/downloading-source-rpms-in-fedora/</link>
		<comments>http://www.coverfire.com/archives/2007/12/29/downloading-source-rpms-in-fedora/#comments</comments>
		<pubDate>Sat, 29 Dec 2007 22:53:45 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/archives/2007/12/29/downloading-source-rpms-in-fedora/</guid>
		<description><![CDATA[The main yum executable doesn&#8217;t have an option for downloading source RPMs. Fortunately, this task is made easy by yumdownloader which can be found in the yum-utils package. yum install yum-utils yumdownloader --source scponly This will leave a copy of &#8230; <a href="http://www.coverfire.com/archives/2007/12/29/downloading-source-rpms-in-fedora/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The main yum executable doesn&#8217;t have an option for downloading source RPMs. Fortunately, this task is made easy by yumdownloader which can be found in the yum-utils package.</p>
<pre>
yum install yum-utils
yumdownloader --source scponly</pre>
<p>This will leave a copy of the scponly source RPM in the current directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2007/12/29/downloading-source-rpms-in-fedora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ontario Linux Fest</title>
		<link>http://www.coverfire.com/archives/2007/10/15/ontario-linux-fest/</link>
		<comments>http://www.coverfire.com/archives/2007/10/15/ontario-linux-fest/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 23:53:11 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Canada]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Toronto]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/archives/2007/10/15/ontario-linux-fest/</guid>
		<description><![CDATA[This past Saturday I spent the day at the Ontario Linux Fest which was held at the Toronto Congress Centre. Despite this being the inaugural year for the event it was very well organized and I think, well attended. The &#8230; <a href="http://www.coverfire.com/archives/2007/10/15/ontario-linux-fest/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This past Saturday I spent the day at the <a href="http://www.onlinux.ca/" title="Ontario Linux Fest">Ontario Linux Fest</a> which was held at the <a href="http://www.torontocongresscentre.com/" title="Toronto Congress Centre">Toronto Congress Centre</a>.  Despite this being the inaugural year for the event it was very well organized and I think, well attended. The number I heard was approximately 350 attendees. The most enjoyable aspect of the event was that it had a really nice community feel. Everywhere you looked there were groups of people chatting and having a good time. The only negative thing I can say is that many of the presentations were very high level. Given the broad audience this is not necessarily a bad thing but personally I was hoping for more technical detail. I really hope the organizers are able to this again next year because I&#8217;ll definitely be there.</p>
<p>I didn&#8217;t have a real camera along so the best I can offer is this picture of <a href="http://en.wikipedia.org/wiki/Jon_Hall_(programmer)" title="Jon Hall">Jon &#8216;maddog&#8217; Hall</a>&#8216;s closing presentation taken with my <a href="http://en.wikipedia.org/wiki/Nokia_N800" title="Nokia N800">N800</a>.</p>
<p><img src="http://www.coverfire.com/wp-content/uploads/2007/10/12_52_20-131007.jpg" alt="Picture from the Ontario Linux Fest" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2007/10/15/ontario-linux-fest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Torvalds interview</title>
		<link>http://www.coverfire.com/archives/2007/08/10/torvalds-interview/</link>
		<comments>http://www.coverfire.com/archives/2007/08/10/torvalds-interview/#comments</comments>
		<pubDate>Sat, 11 Aug 2007 00:18:38 +0000</pubDate>
		<dc:creator>Dan Siemon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.coverfire.com/archives/2007/08/10/torvalds-interview/</guid>
		<description><![CDATA[Q&#38;A: Torvalds on Linux, Microsoft, software&#8217;s future CW: Lots of researchers made millions with new computer technologies, but you preferred to keep developing Linux. Don&#8217;t you feel you missed the chance of a lifetime by not creating a proprietary Linux? &#8230; <a href="http://www.coverfire.com/archives/2007/08/10/torvalds-interview/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.linuxworld.com/news/2007/080907-torvalds-on-linux-ms-softwares.html?page=1" title="Torvalds interview">Q&amp;A: Torvalds on Linux, Microsoft, software&#8217;s future</a></p>
<blockquote><p><strong>CW</strong>: Lots of researchers made millions with new computer technologies, but you preferred to keep developing Linux. Don&#8217;t you feel you missed the chance of a lifetime by not creating a proprietary Linux?</p></blockquote>
<blockquote><p><strong>Torvalds</strong>: No, really. First off, I&#8217;m actually perfectly well off. I live in a good-sized house, with a nice yard, with deer occasionally showing up and eating the roses (my wife likes the roses more, I like the deer more, so we don&#8217;t really mind). I&#8217;ve got three kids, and I know I can pay for their education. What more do I need?  . . . So instead, I have a very good life, doing something that I think is really interesting, and something that I think actually matters for people, not just me. And that makes me feel good.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.coverfire.com/archives/2007/08/10/torvalds-interview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
