<?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>stonetable.org &#187; Technology</title>
	<atom:link href="http://www.stonetable.org/tag/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stonetable.org</link>
	<description>An economy of words</description>
	<lastBuildDate>Sun, 27 Dec 2009 19:32:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ecto and Wordpress 2.1</title>
		<link>http://www.stonetable.org/2007/02/01/ecto-and-wordpress-21/</link>
		<comments>http://www.stonetable.org/2007/02/01/ecto-and-wordpress-21/#comments</comments>
		<pubDate>Thu, 01 Feb 2007 08:48:18 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2007/02/01/ecto-and-wordpress-21/</guid>
		<description><![CDATA[Wordpress, the software that powers this blog, released a new version recently and I, like many others, upgraded right away.  As it turns out, there&#8217;s a minor bug in the XMLRPC handling that breaks my favorite blogging client Ecto.
If you&#8217;re using Ecto and Wordpress, you can apply the patch or you&#8217;ll have to wait [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wordpress.org/">Wordpress</a>, the software that powers this blog, released a new version recently and I, like many others, upgraded right away.  As it turns out, there&#8217;s a minor bug in the XMLRPC handling that <a href="http://trac.wordpress.org/ticket/3662">breaks</a> my favorite blogging client <a href="http://ecto.kung-fu.tv/">Ecto</a>.</p>
<p>If you&#8217;re using Ecto and Wordpress, you can apply the patch or you&#8217;ll have to wait for the next maintenance release of Wordpress.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2007/02/01/ecto-and-wordpress-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting gem to work in Ubuntu Dapper</title>
		<link>http://www.stonetable.org/2006/07/09/getting-gem-to-work-in-ubuntu-dapper-2/</link>
		<comments>http://www.stonetable.org/2006/07/09/getting-gem-to-work-in-ubuntu-dapper-2/#comments</comments>
		<pubDate>Sun, 09 Jul 2006 17:44:23 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2006/07/09/getting-gem-to-work-in-ubuntu-dapper-2/</guid>
		<description><![CDATA[Typically, you would install rubygems like so:
wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz
tar xfvz rubygems-0.8.11.tgz
cd rubygems-0.8.11
sudo ruby setup.rb

Unfortunately, attempting to install anything will generate an error:
sudo gem install rails &#8211;include-dependencies
ERROR:  While executing gem &#8230; (Gem::GemNotFoundException)
Could not find rails (> 0) in the repository

As I understand it, the Ruby package will look in /usr/lib/ruby/gems, but the rubygems tarball will look [...]]]></description>
			<content:encoded><![CDATA[<p>Typically, you would install rubygems like so:</p>
<blockquote><p>wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz<br />
tar xfvz rubygems-0.8.11.tgz</p>
<p>cd rubygems-0.8.11<br />
sudo ruby setup.rb</p>
</blockquote>
<p>Unfortunately, attempting to install anything will generate an error:</p>
<blockquote><p>sudo gem install rails &#8211;include-dependencies<br />
ERROR:  While executing gem &#8230; (Gem::GemNotFoundException)<br />
Could not find rails (> 0) in the repository</p>
</blockquote>
<p>As I understand it, the Ruby package will look in /usr/lib/ruby/gems, but the rubygems tarball will look in /var/lib/gems.  To get around this, create a symbolic link:</p>
<blockquote><p>sudo ln -s /usr/lib/ruby/gems/ /var/lib/gems<br />
sudo gem update &#8211;system<br />
sudo gem install rails &#8211;include-dependencies</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2006/07/09/getting-gem-to-work-in-ubuntu-dapper-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The most disappointing gadget of 2005: the Nokia 770 Internet Tablet</title>
		<link>http://www.stonetable.org/2005/12/22/the-years-most-disappointing-gadget-the-nokia-770-internet-tablet/</link>
		<comments>http://www.stonetable.org/2005/12/22/the-years-most-disappointing-gadget-the-nokia-770-internet-tablet/#comments</comments>
		<pubDate>Fri, 23 Dec 2005 04:18:21 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2005/12/22/the-years-most-disappointing-gadget-the-nokia-770-internet-tablet/</guid>
		<description><![CDATA[I had been excited by the prospects of the Nokia 770 from the moment I read about it on Planet GNOME.  An internet tablet that ran Open Source Software and used GNOME/GStreamer bits.  It was hard to not be excited.  The early reports from the people who received developer units was promising. [...]]]></description>
			<content:encoded><![CDATA[<p>I had been excited by the prospects of the Nokia 770 from the moment I read about it on <a href="http://planet.gnome.org">Planet GNOME</a>.  An internet tablet that ran Open Source Software and used GNOME/GStreamer bits.  It was hard to not be excited.  The early reports from the people who received developer units was promising.  Software was being ported and written, and things seemed to be progressing by all accounts.</p>
<p><a href="http://www.flickr.com/photos/stonetable/76460719/" title="Photo Sharing"><img src="http://static.flickr.com/39/76460719_c1ac69f544.jpg" width="500" height="293" alt="Nokia 770" /></a></p>
<p>The Nokia 770 was finally released, but only available online.  I waited patiently for them to appear locally.  <a href="http://whiprush.org">Jorge</a> finally spotted one in the wild, at a CompUSA in Michigan.  I braved a snow storm and headed out to my local CompUSA and picked up the only one in inventory.  I was almost giddy when I got home and plugged it in to charge.  And then I used it.</p>
<p>The <a href="http://arstechnica.com/reviews/hardware/nokia770.ars">review</a> Eric wrote for <a href="http://arstechnica.com">Ars Technica</a> sums up my feelings on it nicely.  I really wanted to like the 770.  It had the potential to be a great device but severely fell short on expectations.  The hardware seems underpowered, with the lack of RAM crippling the performance.  Beyond that, the software itself was buggy &#8212; even for a first release.  I could forgive the occasional glitch or two and wait for an update but the persistent issues with the UI &#8212; slow visual response to operations, applications crashing or refusing to start without restarting the device and the minimal working configuration options made it a profound disappointment.</p>
<p>Apparently I&#8217;m not the only one to return the Nokia 770, either.  When Jorge returned his, the manager came to talk to him.  He wanted to know if it was really that bad, because his store had seen a 100% return rate on the device.  Let that sink in for a minute:  every single person who purchased the Nokia 770 at that store returned it.  That doesn&#8217;t bode well for a future revision of the device to address the flaws in this virgin release.  Nokia had a great idea, but the poor execution leads me to proclaim the Nokia 770 the most disappointing gadget of 2005.  Better luck next year, guys.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/12/22/the-years-most-disappointing-gadget-the-nokia-770-internet-tablet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>nautilus-wallpaper</title>
		<link>http://www.stonetable.org/2005/10/03/nautilus-wallpaper/</link>
		<comments>http://www.stonetable.org/2005/10/03/nautilus-wallpaper/#comments</comments>
		<pubDate>Mon, 03 Oct 2005 08:42:38 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2005/10/03/nautilus-wallpaper/</guid>
		<description><![CDATA[I was chatting on irc and organizing my wallpaper when I realized that there was no way to set my background image directly through Nautilus.  I cracked open Anjuta and got to work.
Here is the result:  nautilus-wallpaper
I still need to wrap my brain around autoconf, automake, etc.  I did manage to hack [...]]]></description>
			<content:encoded><![CDATA[<p>I was chatting on irc and organizing my wallpaper when I realized that there was no way to set my background image directly through Nautilus.  I cracked open Anjuta and got to work.</p>
<p>Here is the result:  <a href="http://battleaxe.net/projects/nautilus-wallpaper/">nautilus-wallpaper</a></p>
<p>I still need to wrap my brain around autoconf, automake, etc.  I did manage to hack the Makefiles so that the extension is installed to prefix/lib/nautilus/extensions-1.0.  Hopefully there aren&#8217;t any other quirks with that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/10/03/nautilus-wallpaper/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Where am I?</title>
		<link>http://www.stonetable.org/2005/09/26/where-am-i/</link>
		<comments>http://www.stonetable.org/2005/09/26/where-am-i/#comments</comments>
		<pubDate>Tue, 27 Sep 2005 03:01:11 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://stonetable.org/?p=259</guid>
		<description><![CDATA[Just a little bit of code I&#8217;ve been working on.  Call this a proof-of-concept to test the geo-targetting library that I&#8217;m using.  Taking that (a commercial product) and combining it with the Google Maps API, I&#8217;ve come up with something kind of fun:
Where am I?
It&#8217;s not 100% accurate and it only goes to [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little bit of code I&#8217;ve been working on.  Call this a proof-of-concept to test the geo-targetting library that I&#8217;m using.  Taking that (a commercial product) and combining it with the Google Maps API, I&#8217;ve come up with something kind of fun:</p>
<p><a href="http://www.battleaxe.net/geotarget/">Where am I?</a></p>
<p>It&#8217;s not 100% accurate and it only goes to the city level but it&#8217;s close enough for most purposes I need it for.  It&#8217;s some pretty interesting technology, too.  My next step is extending it to not only target the city you (or your ISP) is in, but other cities around you in a certain mile radius.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/09/26/where-am-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benchmarking Apache</title>
		<link>http://www.stonetable.org/2005/08/04/benchmarking-apache/</link>
		<comments>http://www.stonetable.org/2005/08/04/benchmarking-apache/#comments</comments>
		<pubDate>Fri, 05 Aug 2005 01:08:48 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://stonetable.org/?p=256</guid>
		<description><![CDATA[I&#8217;m writing a new web application using mod_perl 2.0.  It&#8217;s heavy on network I/O so I&#8217;m doing some benchmarking and testing with simulated I/O to see just how many requests/second I can expect a single server to handle.  While reading through Practical mod_perl I discovered one of the greatest tools ever: ab.

stone@moradin:~ $ [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing a new web application using mod_perl 2.0.  It&#8217;s heavy on network I/O so I&#8217;m doing some benchmarking and testing with simulated I/O to see just how many requests/second I can expect a single server to handle.  While reading through <a href="http://modperlbook.org/html/ch09_01.html">Practical mod_perl</a> I discovered one of the greatest tools ever: <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">ab</a>.</p>
<blockquote><p>
stone@moradin:~ $ ab -n 5000 -c 10 http://localhost/echo<br />
This is ApacheBench, Version 2.0.41-dev < $Revision: 1.141 $> apache-2.0<br />
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/</p>
<p>Benchmarking localhost (be patient)<br />
Completed 500 requests<br />
Completed 1000 requests<br />
Completed 1500 requests<br />
Completed 2000 requests<br />
Completed 2500 requests<br />
Completed 3000 requests<br />
Completed 3500 requests<br />
Completed 4000 requests<br />
Completed 4500 requests<br />
Finished 5000 requests</p>
<p>Server Software:        Apache/2.0.54<br />
Server Hostname:        localhost<br />
Server Port:            80</p>
<p>Document Path:          /echo<br />
Document Length:        33 bytes</p>
<p>Concurrency Level:      10<br />
Time taken for tests:   2.326156 seconds<br />
Complete requests:      5000<br />
Failed requests:        0<br />
Write errors:           0<br />
Total transferred:      1145916 bytes<br />
HTML transferred:       165132 bytes<br />
Requests per second:    2149.47 [#/sec] (mean)<br />
Time per request:       4.652 [ms] (mean)<br />
Time per request:       0.465 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          481.05 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:        0    1   0.7      1       8<br />
Processing:     2    2   1.2      3      10<br />
Waiting:        0    1   0.9      2       8<br />
Total:          3    3   1.2      4      11<br />
WARNING: The median and mean for the waiting time are not within a normal deviation<br />
        These results are probably not that reliable.</p>
<p>Percentage of the requests served within a certain time (ms)<br />
  50%      4<br />
  66%      4<br />
  75%      4<br />
  80%      4<br />
  90%      4<br />
  95%      5<br />
  98%      7<br />
  99%      7<br />
 100%     11 (longest request)
</p></blockquote>
<p>This is awesome.  Not only does it rock, but it&#8217;s included by default with Apache.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/08/04/benchmarking-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quickie: Browser Detection</title>
		<link>http://www.stonetable.org/2005/07/28/quickie-browser-detection/</link>
		<comments>http://www.stonetable.org/2005/07/28/quickie-browser-detection/#comments</comments>
		<pubDate>Thu, 28 Jul 2005 16:30:23 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2005/07/28/quickie-browser-detection/</guid>
		<description><![CDATA[I haven&#8217;t had much time to do anything but sleep or work the last few weeks but I had to take a quick break to share something very, very cool.
I needed to add some browser detection code to my current project.  This is such a standard thing I knew someone had to have written [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t had much time to do anything but sleep or work the last few weeks but I had to take a quick break to share something very, very cool.</p>
<p>I needed to add some browser detection code to my current project.  This is such a standard thing I knew someone had to have written a version that I could use and lo and behold, Mozilla has done it: <a href="http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html">The Ultimate JavaScript Client Sniffer</a>.</p>
<p>The page is marked as obsolete and a historical reference but that&#8217;s okay with me.  I&#8217;m trying to detect obsolete browsers, so I figure it&#8217;s appropriate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/07/28/quickie-browser-detection/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reviving dead hardware: IBM Thinkpad 600</title>
		<link>http://www.stonetable.org/2005/06/28/reviving-dead-hardware-ibm-thinkpad-600/</link>
		<comments>http://www.stonetable.org/2005/06/28/reviving-dead-hardware-ibm-thinkpad-600/#comments</comments>
		<pubDate>Tue, 28 Jun 2005 17:00:07 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2005/06/28/reviving-dead-hardware-ibm-thinkpad-600/</guid>
		<description><![CDATA[I had an old IBM Thinkpad that I bought used at a local computer show for Dena.   A Pentium II 233Mhz with a 5G hard drive and 192M of PC100 RAM.  Not exactly high end but hey, it&#8217;s a Thinkpad and it was fairly cheap.
After she got her Powerbook I installed Debian [...]]]></description>
			<content:encoded><![CDATA[<p>I had an old IBM Thinkpad that I bought used at a local computer show for Dena.   A Pentium II 233Mhz with a 5G hard drive and 192M of PC100 RAM.  Not exactly high end but hey, it&#8217;s a Thinkpad and it was fairly cheap.</p>
<p>After she got her Powerbook I installed Debian on it and used it as a backup laptop.  A buddy of mine needed a machine for a while so I lent him the Thinkpad.  I eventually got it back a year or so later but it wouldn&#8217;t boot.  Instead it greeted me with the BIOS error code &#8220;161, 192, 163&#8243;, which is computer speak for &#8220;What the fuck, I can&#8217;t remember who or what I am.&#8221;  I did a little googling and found that this Thinkpad uses a very standard battery for CMOS, the CR2025, which can be bought damn near anywhere.  I picked one up at Radio Shack for under $3.50 with tax. </p>
<p><a href="http://www.flickr.com/photos/stonetable/22158168/"><img src="http://photos15.flickr.com/22158168_1ad7dd0fd0_m.jpg" alt="Inside the Thinkpad 600" border="0" /></a></p>
<p>Getting to the BIOS battery is painfully easy.  Remove the cover housing the memory and pull the top piece of memory.  You might be able to work around it but why bother.  From there, you can disconnect the battery lead and pull it free.  It&#8217;s just sitting there waiting for attention.</p>
<p><a href="http://www.flickr.com/photos/stonetable/22158319/"><img src="http://photos15.flickr.com/22158319_0845c9e8db_m.jpg" alt="Liberating the CMOS battery" border="0" /></a></p>
<p>The guy at Radio Shack was in awe of the yellowness of the battery.  Apparently he&#8217;s unfamiliar with modern marvels such as &#8220;shrink-wrapped plastic&#8221;.  In any case, we&#8217;ll be cutting off the plastic coating shortly.</p>
<p><a href="http://www.flickr.com/photos/stonetable/22158480/"><img src="http://photos15.flickr.com/22158480_7e1f0f41db_m.jpg" alt="Assemble the new battery" border="0" /></a></p>
<p>Cut away the plastic coating.  The negative and positive leads are stamped into the surface of the battery so you have to pry them off carefully.  I used the flat blade of a screwdriver to work the lead away from the battery.</p>
<p><a href="http://www.flickr.com/photos/stonetable/22158675/"><img src="http://photos16.flickr.com/22158675_250a009618_m.jpg" alt="Putting it all together" border="0" /></a></p>
<p>Putting it back together is a bit of a cheap hack but it seems to work well enough.  I cut small strips of electrical tape to secure the leads to the battery.  I made sure to wrap the exposed leads to the wire so that there is no chance of them coming into contact with each other or anything else metallic in the case.  Then I wrapped the entire thing for safe measure.  Putting the battery back in place is easy, just reverse the process.  Tighten it up and you&#8217;re ready to go.</p>
<p><a href="http://www.flickr.com/photos/stonetable/22158800/"><img src="http://photos16.flickr.com/22158800_8e17f0f291_m.jpg" alt="" border="0" /></a></p>
<p>The first time you power it up you&#8217;ll get another BIOS error code, this one telling you that you need to set the date/time.  It&#8217;s an ugly screen but it works.</p>
<p>This quick and simple hack has given this old Thinkpad a new life.  Armed with a fresh install of Ubuntu and a wireless card, I&#8217;ll be rigging this up as a semi-permanent member of my wardriving setup.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/06/28/reviving-dead-hardware-ibm-thinkpad-600/feed/</wfw:commentRss>
		<slash:comments>85</slash:comments>
		</item>
		<item>
		<title>C# Gripe: enum base types</title>
		<link>http://www.stonetable.org/2005/06/24/test/</link>
		<comments>http://www.stonetable.org/2005/06/24/test/#comments</comments>
		<pubDate>Fri, 24 Jun 2005 16:43:25 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2005/06/24/test/</guid>
		<description><![CDATA[As a whole I love C# but sometimes I find some quirk that I just don&#8217;t understand.  I&#8217;m sure there is a reasonable explanation of why it works the way it does but I don&#8217;t know what it is.
I was building a Gtk.TreeView last night and setup an enum for each column in the [...]]]></description>
			<content:encoded><![CDATA[<p>As a whole I love C# but sometimes I find some quirk that I just don&#8217;t understand.  I&#8217;m sure there is a reasonable explanation of why it works the way it does but I don&#8217;t know what it is.</p>
<p>I was building a Gtk.TreeView last night and setup an enum for each column in the TreeView.  No big deal, right?  The enum looks something like this:</p>
<p><code lang="C#"><br />
enum Fields<br />
{<br />
	enum1 = 0,<br />
	enum2,<br />
	enum3<br />
}<br />
</code></p>
<p>Then, to build the column I do something like this:<br />
<code lang="C#"><br />
			TreeViewColumn col = new TreeViewColumn ();<br />
			CellRenderer NameRenderer = new CellRendererText ();<br />
			col.PackStart (NameRenderer, true);<br />
			col.AddAttribute (NameRenderer, "text", (int)Fields.Keyword);<br />
</code></p>
<p>Notice on that last line that I have to <i>cast</i> the enum member to an int, even though the type of the enum is int, you still have to cast its value.</p>
<p>You can specify the base type of an enumerator, but it defaults to an int.  You could do this (and I tried) but it doesn&#8217;t change anything:</p>
<p><code lang="C#"><br />
enum Fields : int<br />
{<br />
	enum1 = 0,<br />
	enum2,<br />
	enum3<br />
}<br />
</code></p>
<p>It would be nice to not need to cast the value of the enum, especially given the ability to explicitly set the type of the enum.  I don&#8217;t know the internals of how the compiler works nor have I read the <a href="http://msdn.microsoft.com/netframework/programming/clr/default.aspx">CLR</a> specification.  It&#8217;s just annoying to to tell an enum that it&#8217;s an int, only have to remind it of that fact every time you use it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/06/24/test/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Professional Courtesy</title>
		<link>http://www.stonetable.org/2005/04/29/professional-courtesy/</link>
		<comments>http://www.stonetable.org/2005/04/29/professional-courtesy/#comments</comments>
		<pubDate>Sat, 30 Apr 2005 02:11:15 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://stonetable.org/2005/04/29/professional-courtesy/</guid>
		<description><![CDATA[So I sit down tonight to make some layout changes to a client&#8217;s website.  The changes were minor, moving a form from the bottom of the page to the top and shifting some data around.  No big deal, right?  The code in question  involves some external javascript code supplied by a [...]]]></description>
			<content:encoded><![CDATA[<p>So I sit down tonight to make some layout changes to a client&#8217;s website.  The changes were minor, moving a form from the bottom of the page to the top and shifting some data around.  No big deal, right?  The code in question  involves some external javascript code supplied by a third-party vendor.  No big deal, I thought.  Famous last words.</p>
<p>I move the code around and refresh the page.  There is significant lag while the browser tries to render the form.  Odd, I think, but maybe the server the javascript is being pulled from is slow.  Better to pull the javascript local, right?  I pull the code down and crack it open, with the intent of either embedding it directly in the page or at least pull it from a local file.</p>
<p>Holy shit what a disaster.</p>
<p>The file consisted of 5 lines of code, only one of which was actually necessary.  The problem was that the single line was approximately 46,838 characters long.  Yes, you read that right: <strong>46,838</strong> characters.</p>
<p>Let this serve as a public plea to anyone who develops web applications in any form:  For the love of all that is sacred, never, ever, neglect the endline.  Endline characters are my friend.  They should be your friend, too.  If you can&#8217;t grasp the fact that an application, especially a web browser, might have problems handling FOURTY SIX THOUSAND characters without a line break, then I have one favor to ask:  find a new line of work.  People like you make it more difficult for people like me to do my job.  Sure, I get to play the part of hero when I show my client their &#8220;new and improved website&#8221; that loads an order of magnitude faster because I simply applied sane whitespace rules.  At the end of the day, however, I would rather spend my time doing my job and not cleaning up your crap.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stonetable.org/2005/04/29/professional-courtesy/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.368 seconds -->
