<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss1full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:sub="http://purl.org/rss/1.0/modules/subscription/" xmlns:cc="http://web.resource.org/cc/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"> 

  <channel rdf:about="http://caprahircus.ws">
    <title>Capra hircus</title>
    <link>http://caprahircus.ws</link>
    <description>Tales of an African pygmy goat.</description>
    <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
    <language>en</language>
    <dc:creator>Adrian Sampson (adrian@pygmysoftware.com)</dc:creator>
    <dc:rights>Copyright Adrian Sampson</dc:rights>
    <admin:generatorAgent rdf:resource="http://www.raelity.org/apps/blosxom/?v=2.0rc5" />
    <admin:errorReportsTo rdf:resource="mailto:adrian@pygmysoftware.com" />

    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://caprahircus.ws/audio/tvp-fknjb.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/photo/hair_loading_dots.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/code/icar/rel-0-8-1.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/code/icar/rel-0-8.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/life/bainbridge_blogger_bash.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/audio/ttis.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/linkage/ferry.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/thought/tech/php_irritations.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/thought/tech/i_use_launchbar.html" />
        <rdf:li rdf:resource="http://caprahircus.ws/thought/tech/obfuscation.html" />

      </rdf:Seq>
    </items>

  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/caprahircus" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /></channel>

  <item rdf:about="http://caprahircus.ws/audio/tvp-fknjb.html">
    <title>TVP makes critically-acclaimed debut; rock &amp;#8220;changed forever&amp;#8221;</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/Fgg_zFBCGCw/tvp-fknjb.html</link>
    <description>

On behalf of The Vegetarians Promiscuous, it is with great hesitation and a caveat emptor overtone that I announce the immediate availability of a new EP by the eclectic sofa-rock group...</description>
    <dc:subject>/audio</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-10-24T03:38:04Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/audio_tvp_fknjb" />
    <content:encoded>&lt;a href="http://caprahircus.ws/files/tvp-fknjb/front.png"&gt;&lt;img src="http://caprahircus.ws/files/tvp-fknjb/front_mini.png" width="150" height="150" alt="Fuckin' Job album cover" style ="float:right; border:0px; margin: 0px 0px 1em 1em;" /&gt;&lt;/a&gt;

&lt;p&gt;On behalf of The Vegetarians Promiscuous, it is with great hesitation and a &lt;i&gt;caveat emptor&lt;/i&gt; overtone that I announce the immediate availability of a new EP by the eclectic sofa-rock group. Before another sentence can pass, I must request that you, dear reader, restrain yourself from listening to the music. If this restraint proves insufficient, know that I have placed Kreacher, my &lt;a href="http://www.apple.com/powerbook/"&gt;PowerBook&lt;/a&gt;, on the floor and type this on my knees with my nose to the floor (I am actually doing this): do not judge us too harshly.&lt;/p&gt;

&lt;p&gt;The record is named &lt;i&gt;Fuckin&amp;#8217; Job&lt;/i&gt; and is not for your children. (Please add this to your notes under &amp;#8220;Reasons Not to Listen to the New TVP Album&amp;#8221;.) Sometimes intentionally and sometimes incidentally, the topics and vocabulary become tastelessly inappropriate. Relatedly, I was somehow permitted to sing on every single track on the album, demonstrating reckless disregard of the common knowledge that I have no sense of rhythm and couldn&amp;#8217;t carry a tune even if that stringy-haired and hollow-eyed degenerate, &lt;a href="http://en.wikipedia.org/wiki/Image:Delay_Mugshot.jpg"&gt;Tom DeLay&lt;/a&gt;, reached through the bars of his holding cell to fix his skeletal fingers around my neck and rasped through clenched, rotting teeth, &lt;em&gt;&amp;#8220;carry a tune!&amp;#8221;&lt;/em&gt;. I am fairly certain that the only time I sing a real note on &lt;i&gt;Fuckin&amp;#8217; Job&lt;/i&gt; is in the record&amp;#8217;s only love song, wherein a vocoder has had its way with my tunelessness.&lt;/p&gt;

&lt;p&gt;If the EP had a subtitle, it would probably be &amp;#8220;we ran out of time&amp;#8221;. The band originally imagined that it would produce good music, but it slowly dawned upon us that this would be very difficult. So, instead, we produced these songs. The process became one riddled with cut corners, half-assedness, and, above all, distraction. (My favorite of the former occurs in track seven, in which Kreacher&amp;#8217;s fan noise almost entirely drowned out the voices of the band. An application of &lt;a href="http://audacity.sourceforge.net/"&gt;Audacity&lt;/a&gt;&amp;#8217;s noise-removal filter had an unexpected and ridiculously irritating effect.) At least we are better than &lt;a href="http://en.wikipedia.org/wiki/Wesley_Willis"&gt;Wesley Willis&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Please cringe as little as possible as you listen, if you must, to these songs on &lt;a href="http://last.fm/"&gt;last.fm&lt;/a&gt;. In total, they run twenty-seven minutes exactly.&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=62343533&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=62343533&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Best Suit (4:07)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=57370946&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=57370946&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Breakfast (1:40)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=57370948&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=57370948&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; People Always Tellin&amp;#8217; Me to Get a Fuckin&amp;#8217; Job (1:53)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=57370949&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=57370949&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; You Suck So Much (1:28)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=62343534&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=62343534&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Breakfast Part ii (3:53)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=57370943&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=57370943&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Symbols &amp;amp; Numbers (1:48)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=62343535&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=62343535&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; The Tight Pants Dance (12:29)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Vegetarians Promiscuous are:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://strange.radbox.org/"&gt;Joel Bombardier&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.livejournal.com/~weaselweasel/"&gt;Kris Skotheim&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://flickr.com/photos/arts/"&gt;Ariana Taylor-Stanley&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.flickr.com/photos/annajoy/"&gt;Anna Scott&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://caprahircus.ws/"&gt;Adrian Sampson&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may also be interested in some other &lt;i&gt;Fuckin&amp;#8217; Job&lt;/i&gt;-related resources.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;It&amp;#8217;s possible that you might want to read &lt;a href="http://caprahircus.ws/files/tvp-fknjb/lyrics.html" style = "font-weight: bold;"&gt;the lyrics&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;You could need to see a &lt;a href="http://www.libpng.org/pub/png/"&gt;PNG&lt;/a&gt; of &lt;a href="http://caprahircus.ws/files/tvp-fknjb/front.png" style = "font-weight: bold;"&gt;the front cover&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Or, perhaps, you&amp;#8217;d be more into &lt;a href="http://caprahircus.ws/files/tvp-fknjb/back.png" style = "font-weight: bold;"&gt;the back cover&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Not one to take sides, maybe you&amp;#8217;d like to download a &lt;a href="http://partners.adobe.com/public/developer/pdf/index_reference.html"&gt;PDF&lt;/a&gt; of &lt;a href="http://caprahircus.ws/files/tvp-fknjb/liner.pdf" style = "font-weight: bold;"&gt;the full liner&lt;/a&gt;, including both covers and all the lyrics. Print the two pages onto opposite sides of the same sheet of paper. Choosing the correct orientation for the paper may take some critical thought, but I&amp;#8217;m sure you can do it.&lt;/li&gt;
    &lt;li&gt;There&amp;#8217;s a chance that you would like to download these tracks. You can do this at &lt;a href="http://www.last.fm/music/The+Vegetarians+Promiscuous/Fuckin%27+Job"&gt;the last.fm album page&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://caprahircus.ws/audio/ttis.html"&gt;Once again&lt;/a&gt;, these tracks are offered to you under the &lt;a href="http://creativecommons.org/"&gt;Creative Commons&lt;/a&gt; &lt;a href="http://creativecommons.org/licenses/by/2.5/"&gt;Attribution 2.5&lt;/a&gt; license.&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/audio/tvp-fknjb.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/photo/hair_loading_dots.html">
    <title>Taking the beautiful and making it weird</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/MQJiAGX1PpQ/hair_loading_dots.html</link>
    <description>Perhaps I have been reading just a bit too much Neal Stephenson lately, but it seems to me that humans are dangerously susceptible to &#x201c;infection&#x201d; by ideas and images...</description>
    <dc:subject>/photo</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-07-24T19:55:50Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/photo_hair_loading_dots" />
    <content:encoded>&lt;p&gt;Perhaps I have been reading just a bit too much &lt;a href="http://www.nealstephenson.com/"&gt;Neal Stephenson&lt;/a&gt; lately, but it seems to me that humans are dangerously susceptible to &amp;#8220;infection&amp;#8221; by ideas and images. Once a thought enters a human mind, willfully or otherwise, it sinks into the subconscious and cannot be forcibly removed &amp;mdash; it asserts itself consciously in convenient circumstances until it is peacefully forgotten.&lt;/p&gt;

&lt;p&gt;A perfect demonstration of this occurred on &lt;a href="http://flickr.com/photos/sean_fraga/archives/date-posted/2005/07/06/"&gt;Wednesday, July 6th, 2005&lt;/a&gt;, when five people whose minds were (and are) unhealthily saturated by the ideas and images of the online photo-sharing service and mind-composting machine &lt;a href="http://flickr.com/"&gt;Flickr&lt;/a&gt; assembled with the primary goal of &lt;a href="http://flickr.com/photos/sean_fraga/24104339/"&gt;shortening the hair&lt;/a&gt; of &lt;a href="http://flickr.com/photos/sean_fraga/24107262/in/dateposted/"&gt;two of&lt;/a&gt; &lt;a href="http://flickr.com/photos/sean_fraga/24104202/in/dateposted/"&gt;their number&lt;/a&gt;. After the carnage had subsided, cleanup began, and, anomalously, the discarded hair formed itself into two circular wads of contrasting color.&lt;/p&gt;

&lt;p&gt;I can&amp;#8217;t recall for certain in which &lt;a href="http://www.cryptonomicon.com/"&gt;relatively independent sub-totality&lt;/a&gt; the idea arose (probably &lt;a href="http://expresos.livejournal.com/"&gt;this one&lt;/a&gt;, though). The saturation of Flickr-imagery acted as impenetrable noise. Eventually, the group began nudging the wads of hair around and snapping successive photographs. They produced an animation that is simultaneously a novel and clever echo of something beautiful &lt;img src="http://flickr.com/images/pulser2.gif" alt="flickr loading dots" style="width:32px; height:15px; margin: 0px 0px -2px 0px; display:inline;" /&gt;, at least from their perspective, and the most disgusting &lt;a href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt"&gt;GIF animation&lt;/a&gt; of the year:&lt;/p&gt;

&lt;img src="http://caprahircus.ws/files/hair_loading_dots.gif" style="width:250px; height:154px; margin: .5em auto; display: block;" alt="shuffling hair" /&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/photo/hair_loading_dots.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/code/icar/rel-0-8-1.html">
    <title>iCAR 0.8.1</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/wfjE0joXhKQ/rel-0-8-1.html</link>
    <description>Well, that was quick...</description>
    <dc:subject>/code/icar</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-05-30T23:10:40Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/code_icar_rel_0_8_1" />
    <content:encoded>&lt;p&gt;Well, that was quick. A few of the people waiting for &lt;a href="http://apple.com/macosx/"&gt;Tiger&lt;/a&gt; compatibility were sorely disappointed by &lt;a href="http://caprahircus.ws/code/icar/rel-0-8.html"&gt;iCAR 0.8&lt;/a&gt;. Instead of crashing when a message was received, &lt;a href="http://www.apple.com/macosx/features/ichat/"&gt;iChat&lt;/a&gt; (with iCAR installed) became entirely non-functional at startup. The buddy list would not appear, menu items would do nothing, and, perhaps most worryingly, the application menu (the one titled &amp;#8220;iChat&amp;#8221;) would not even appear.&lt;/p&gt;

&lt;p&gt;This happened, however, to a minority of users. iCAR worked perfectly under fresh installations of Mac OS X and iChat, but failed because of some vestige of the previous installation.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Hm,&lt;/i&gt; I said to myself, stroking my jutting chin dramatically and narrowing my aging eyes. &lt;i&gt;This sounds eerily familiar.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;The help of faithful user &lt;strong&gt;Shamir&lt;/strong&gt; came to my rescue in this singular case. Using copies of his iChat preference property list and an inductive technique that I&amp;#8217;ve come to call &amp;#8220;change a working installation into a broken installation in little increments until it becomes broken itself&amp;#8221;, I identified the offending entry in some users&amp;#8217; &lt;code&gt;com.apple.iChat.plist&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Although I pretended to be startled and even a bit alarmed for the benefit of the swarm of reporters I had by then attracted, I had had a nagging suspicion, almost an intuitive &lt;em&gt;certainty&lt;/em&gt;, all along that I would find the root of my troubles in &lt;code&gt;NSToolbar Configuration NSPreferences&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Aside from that it exposed my striking similarity to certain &lt;a href="http://www.sherlockholmesonline.org/"&gt;Doylian&lt;/a&gt; (which I am certain is the incorrect word) characters, the problem is actually rather interesting and might crop up again for me or someone else, so I&amp;#8217;ve decided to write it up here.&lt;/p&gt;

&lt;p&gt;Under &lt;a href="http://arstechnica.com/reviews/os/macosx-10.3.ars"&gt;Panther&lt;/a&gt;, a strange problem cropped up that, for some users, would cause the iCAR &amp;#8220;Auto-Reply&amp;#8221; preference pane to be missing from iChat&amp;#8217;s &amp;#8220;Preferences&amp;#8221; window. Many sleepless nights pointed me toward a strange default in the iChat preference property list of some users:&lt;/p&gt;

&lt;pre&gt;&amp;lt;key&gt;NSToolbar Configuration NSPreferences&amp;lt;/key&gt;
&amp;lt;dict&gt;
    &amp;lt;key&gt;TB Display Mode&amp;lt;/key&gt;
    &amp;lt;integer&gt;1&amp;lt;/integer&gt;
    &amp;lt;key&gt;TB Icon Size Mode&amp;lt;/key&gt;
    &amp;lt;integer&gt;1&amp;lt;/integer&gt;
    &amp;lt;key&gt;TB Is Shown&amp;lt;/key&gt;
    &amp;lt;integer&gt;1&amp;lt;/integer&gt;
    &amp;lt;key&gt;TB Item Identifiers&amp;lt;/key&gt;
    &amp;lt;array&gt;
        &amp;lt;string&gt;General&amp;lt;/string&gt;
        &amp;lt;string&gt;Accounts&amp;lt;/string&gt;
        &amp;lt;string&gt;Messages&amp;lt;/string&gt;
        &amp;lt;string&gt;Alerts&amp;lt;/string&gt;
        &amp;lt;string&gt;Privacy&amp;lt;/string&gt;
        &amp;lt;string&gt;Video&amp;lt;/string&gt;
    &amp;lt;/array&gt;
    &amp;lt;key&gt;TB Size Mode&amp;lt;/key&gt;
    &amp;lt;integer&gt;1&amp;lt;/integer&gt;
&amp;lt;/dict&gt;&lt;/pre&gt;

&lt;p&gt;(How or when this preference was created still eludes me.)&lt;/p&gt;

&lt;p&gt;In particular, the &lt;code&gt;TB Item Identifiers&lt;/code&gt; array was to blame. It defined which preference panes would be displayed in the iChat preferences toolbar. &amp;#8220;Auto-Reply&amp;#8221;, of course, is not on the list. So, without even consulting &lt;code&gt;NSPreferences&lt;/code&gt;, the &lt;code&gt;NSToolbar&lt;/code&gt; instance would refuse to display the button that could display a quite dormant iCAR preference pane.&lt;/p&gt;

&lt;p&gt;Diabolical.&lt;/p&gt;

&lt;p&gt;My solution to this was to hijack the &lt;code&gt;standardUserDefaults&lt;/code&gt; class method of &lt;code&gt;NSUserDefaults&lt;/code&gt; using &lt;code&gt;poseAsClass:&lt;/code&gt;. Whenever anything requested access to the preferences of iChat, iCAR would fetch the standard instance, remove the &lt;code&gt;TB Item Identifiers&lt;/code&gt; entry, and pass it along as if it were an accurate reflection of the property list stored on disk.&lt;/p&gt;

&lt;p&gt;Equally, if not more, diabolical.&lt;/p&gt;

&lt;p&gt;This came around to bite me when users who upgraded to Tiger still had this preference. Something changed in the handling of &lt;code&gt;NSUserDefaults&lt;/code&gt; and it was not my or iCAR&amp;#8217;s place to tinkering around at its lowest levels. Essentially, I ended up returning a useless value whenever anything needed the &lt;code&gt;standardUserDefaults&lt;/code&gt;, which wreaked &lt;a href="http://www.fireflyfans.net/thread.asp?b=4&amp;amp;t=9507"&gt;all manner of unseemly&lt;/a&gt; havoc on the running instance of iChat.&lt;/p&gt;

&lt;p&gt;Fortunately, it looks like Tiger entirely ignores the &lt;code&gt;TB Item Identifiers&lt;/code&gt; entry when dealing with &lt;code&gt;NSPreferences&lt;/code&gt;. The old bug suddenly vanished, so the fix for the new bug becomes the happy ending of this tale: I just deleted the two files that implemented the &lt;code&gt;NSUserDefaults&lt;/code&gt; hack.&lt;/p&gt;

&lt;p&gt;Please excuse the inexcusable gibberish above. I did not intend to put you through it. It might be said that it just poured out.&lt;/p&gt;

&lt;p&gt;Regardless, &lt;a href="http://pygmysoftware.com/software/icar/"&gt;iCAR 0.8.1&lt;/a&gt; &amp;mdash; which was fixed only by &lt;em&gt;deleting code&lt;/em&gt; &amp;mdash; is very available. &lt;a href="http://prdownloads.sourceforge.net/icar/iCAR-0.8.1.dmg?download"&gt;Binary&lt;/a&gt;, &lt;a href="http://prdownloads.sourceforge.net/icar/iCAR-0.8.1-source.tar.bz2?download"&gt;source&lt;/a&gt;.&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/code/icar/rel-0-8-1.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/code/icar/rel-0-8.html">
    <title>iCAR 0.8</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/H9yTIsnIiHg/rel-0-8.html</link>
    <description>I have at long last gotten off my lazy tuchis and updated iCAR to be compatible with Tiger and iChat 3...</description>
    <dc:subject>/code/icar</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-05-29T10:27:14Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/code_icar_rel_0_8" />
    <content:encoded>&lt;p&gt;I have at long last gotten off my lazy &lt;i&gt;tuchis&lt;/i&gt; and updated &lt;a href="http://pygmysoftware.com/software/icar/"&gt;iCAR&lt;/a&gt; to be compatible with &lt;a href="http://www.apple.com/macosx/"&gt;Tiger&lt;/a&gt; and &lt;a href="http://www.apple.com/macosx/features/ichat/"&gt;iChat 3.0&lt;/a&gt;. I would like to take this opportunity to apologize publicly to the world as a whole for taking as long as I did. Please do not eat my brains.&lt;/p&gt;

&lt;img src="http://caprahircus.ws/files/icar_obsolescence.png" style="float:right; width:253px; height:40px; margin:0px 0px 0px .5em;" alt="obsolescence strikes" /&gt;

&lt;p&gt;Of most pressing note, of course, is that iCAR has suddenly become much less useful. iChat 3.0 now incorporates rudimentary auto-reply functionality. In some respects, you might say that iCAR has gone the way of the &lt;a href="http://www.karelia.com/watson/"&gt;Watson&lt;/a&gt;, but in truth, this story is not nearly as dramatic as Watson&amp;#8217;s or &lt;a href="http://www.konfabulator.com/"&gt;Konfabulator&lt;/a&gt;&amp;#8217;s. There is, namely, zero lost revenue here. I have decided, however quixotically, that I will continue to maintain and add features to iCAR despite its semi-uselessness because it can do some pretty neat stuff and also out of pride.&lt;/p&gt;

&lt;h3&gt;Changes&lt;/h3&gt;

&lt;p&gt;Essentially, release 0.8 of iCAR really only does one thing: it is the Tiger version of iCAR. Under the hood, however, some positively riveting things happened to the code:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;The preference pane was widened to match iChat 3&amp;#8217;s panes.&lt;/li&gt;
    &lt;li&gt;iChat.h was updated to match iChat 3 and the new InstantMessage.framework.&lt;/li&gt;
    &lt;li&gt;
        I refactored message-capturing to match iChat 3&amp;#8217;s new structure.
        &lt;ul&gt;
            &lt;li&gt;Instead of IMService, I now interface with the new Service class.&lt;/li&gt;
            &lt;li&gt;Chats are no longer automatically accepted because they don&amp;#8217;t have to be (see &amp;#8220;Observations&amp;#8221;, below).&lt;/li&gt;
            &lt;li&gt;I removed unnecessary mechanism for delaying past chat acceptance (again, see &amp;#8220;Observations&amp;#8221;).&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Another unneccesary mechanism, this one for accessing status, was removed (the curious, repetitive, and truly nerdy would benefit from another glance below at &amp;#8220;Observations&amp;#8221;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Observations&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;iChat 3 removes a long-standing annoyance. Previous versions could not send messages if chats were not yet accepted (or, even more infuriatingly, if they were in the process of animating their acceptance). This means that replies are now sent faster, iCAR&amp;#8217;s code is much less complex and much prettier, and the software will probably break for fewer people.&lt;/li&gt;
    &lt;li&gt;All of the IMService code I patched was apparently moved into the Service class (even the method signatures I hijack are identical). IMService still exists, but it seems to be greatly simplified, presumably because &lt;a href="http://developer.apple.com/documentation/AppleApplications/Reference/InstantMessageRefUpdate/Articles/InstantMessage.html"&gt;InstantMessage.framework is now a public framework&lt;/a&gt;. It provides a nominal interface for interacting with the status values and messages of iChat (really, iChatAgent.app, the protocol daemon). I initially had trouble patching Service using &lt;a href="http://www.cocoadev.com/index.pl?ClassPosing"&gt;&lt;code&gt;poseAsClass:&lt;/code&gt;&lt;/a&gt;, so I eventually elected to use the &lt;a href="http://culater.net/wiki/moin.cgi/CocoaReverseEngineering"&gt;method swizzling technique&lt;/a&gt; well-documented by &lt;a href="http://culater.net/thc/"&gt;Mike Solomon&lt;/a&gt; of &lt;a href="http://culater.net/software/PithHelmet/PithHelmet.php"&gt;PithHelmet&lt;/a&gt; (&lt;a href="http://greasemonkey.mozdev.org/"&gt;Greasemonkey&lt;/a&gt; for &lt;a href="http://www.apple.com/macosx/features/safari/"&gt;Safari&lt;/a&gt;, sort of) fame.&lt;/li&gt;
    &lt;li&gt;I don&amp;#8217;t know if this appeared in IMService at any point in the past, but Service has the class methods &lt;code&gt;+myStatus&lt;/code&gt; and &lt;code&gt;+myStatusMessage&lt;/code&gt; for obtaining global settings about status. Previously, I was hacking a method into the buddy list window controller to get the status. With iCAR 0.8, I had the satisfaction of deleting that pair of files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Questions&lt;/h3&gt;

&lt;p&gt;Because iChat 3.0 incorporates basic auto-reply functionality, a iCAR is having a bit of an identity crisis. I&amp;#8217;m fairly certain it should stick around, but I am wondering a bit about its role.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Should it still be called the iChat Auto-Reply? It&amp;#8217;s definitely no longer &lt;em&gt;the&lt;/em&gt;&amp;hellip;&lt;/li&gt;
    &lt;li&gt;I should probably stop calling it a &amp;#8220;simple&amp;#8221; auto-reply feature. (Apologies; that was actually not a question.)&lt;/li&gt;
    &lt;li&gt;Should the preference pane and &amp;#8220;Enable&amp;hellip;&amp;#8221; check box continue to use the name &amp;#8220;auto-reply&amp;#8221;? Now that there are two auto-reply functions in iChat (with iCAR installed), perhaps the term is too generic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;The future&lt;/h3&gt;

&lt;p&gt;It seems that I will never be short of new features to implement into the next &lt;em&gt;next&lt;/em&gt; version of iCAR.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Demand has increased recently for iCAR to play nicer with the style settings in iChat. That will be Real Soon Now.&lt;/li&gt;
    &lt;li&gt;Also sorely lacking is the passage of variables to AppleScripts (variables are currently only passed to shell scripts using environment variables). This needs to happen right-quick.&lt;/li&gt;
    &lt;li&gt;Does iChat&amp;#8217;s built-in auto-reply functionality set the &amp;#8220;this is an auto-reply&amp;#8221; flag when it sends its message to the AIM server? If so, can I hijack that in the name of nearly-worthless iCAR progress?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Get it/got it/good&lt;/h3&gt;

&lt;p&gt;Hurry up and &lt;a href="http://prdownloads.sourceforge.net/icar/iCAR-0.8.dmg?download"&gt;download&lt;/a&gt;. Or perhaps you&amp;#8217;d like the &lt;a href="http://prdownloads.sourceforge.net/icar/iCAR-0.8-source.tar.bz2?download"&gt;source&lt;/a&gt;.&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/code/icar/rel-0-8.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/life/bainbridge_blogger_bash.html">
    <title>Bainbridge Blogger Bash</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/UxugGunt6V0/bainbridge_blogger_bash.html</link>
    <description>Now, raucus festivities in celebration of blogging would be nothing more than shameful without a few blog posts (1, 2, 3, 4, 5) about them, would they...</description>
    <dc:subject>/life</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-05-02T14:27:34Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/life_bainbridge_blogger_bash" />
    <content:encoded>&lt;p&gt;Now, &lt;a href="http://www.julieleung.com/archives/001835.html"&gt;raucus festivities&lt;/a&gt; in celebration of blogging would be nothing more than shameful without a few blog posts (&lt;a href="http://kirklea.blogspot.com/2005/05/bainbridge-blogger-bashvenue-chez.html"&gt;1&lt;/a&gt;, &lt;a href="http://casdra.com/blog/index.php?p=654"&gt;2&lt;/a&gt;, &lt;a href="http://binarycircumstance.typepad.com/bc_blog/2005/05/was_it_wysteria.html"&gt;3&lt;/a&gt;, &lt;a href="http://www.sauria.com/blog/2005/05/01#1291"&gt;4&lt;/a&gt;, &lt;a href="http://www.julieleung.com/archives/001844.html"&gt;5&lt;/a&gt;) about them, would they? My contribution follows.&lt;/p&gt;

&lt;p&gt;I found my way to the Bainbridge Blogger Bash by a fortunate &lt;a href="http://flickr.com/"&gt;Flickr&lt;/a&gt; coincidence: I can&amp;#8217;t quite remember how, but I discovered &lt;a href="http://www.julieleung.com/"&gt;Julie Leung&lt;/a&gt;&amp;#8217;s &lt;a href="http://flickr.com/photos/61372797@N00/"&gt;photostream&lt;/a&gt; and marked her as a contact. Soon enough, she had noticed our geographical proximity and had extended a kind invitation to the meetup for webloggers on &lt;a href="http://www.ci.bainbridge-isl.wa.us/" title="the city's $100,000 site"&gt;our rock&lt;/a&gt; that she was planning at the end of the month.&lt;/p&gt;

&lt;p&gt;I showed up late and nervous, having minutes before pulled &lt;a href="http://caprahircus.ws/recipe/banana_nut_muffins.html"&gt;banana muffins&lt;/a&gt; out of the oven. (Please feel free to skip these parentheses if you are not interested in the muffins; all of the sentences they contain are on the subject of muffins. First, for attendees of the Bash, the muffins were vegan. I neglected to inform you of this, but it seems like something you might like to be aware of. Second, I modified the recipe slightly to great effect. Notes on these modifications are on the &lt;a href="http://caprahircus.ws/recipe/banana_nut_muffins.html"&gt;recipe entry&lt;/a&gt;.) I expected to know none of the attendees personally and further that they would all have at least a generation on me. I was approximately correct on the latter point, but the former was disproved when I encountered &lt;a href="http://bainbridgeisland.org/"&gt;Dave Henry&lt;/a&gt;, whom I can&amp;#8217;t recall having laid eyes upon for upwards of seven years. He&amp;#8217;s moved on to bigger, better, and appropriately more ambitious things since then. Namely, he&amp;#8217;s scaled to &lt;a href="http://slovakconsulates.org/"&gt;international trade&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;From there, I began to get a sense for the group as a whole. With some exception, the guests were not as technically oriented as I had led myself to believe that they would be. Dave and &lt;a href="http://www.ecotalkblog.com/"&gt;Philippe Boucher&lt;/a&gt; noted that their interest in the phenomenon of the weblog was decidedly non-technical in nature &amp;mdash; the general focus of the group was on the &lt;em&gt;social&lt;/em&gt; definition of the weblog as opposed to the technical implementation.&lt;/p&gt;

&lt;p&gt;This is not, of course, to give you, dear reader, the impression that the gathering was devoid of nerdiness. Geekery was present in abundance. To illustrate this, I need only observe that our name tags, whose materials were graciously provided by the hosts, contained two items of information: or names and our URLs. The practice of identifying oneself by one&amp;#8217;s Web address was inspiring. My name tag has found its temporary home on the door to my room, but may eventually make its way back to my shirt in the near future.&lt;/p&gt;

&lt;p&gt;While &lt;a href="http://www.sauria.com/blog"&gt;Ted Leung&lt;/a&gt;, the drive-by spammer who knew &lt;a href="http://pygmysoftware.com/software/icar/"&gt;my software&lt;/a&gt; before my name, interjected witticisms, I got to know Philippe and &lt;a href="http://binarycircumstance.typepad.com/"&gt;Chip Gibbons&lt;/a&gt;. I briefly discussed the obligatory &lt;a href="http://www.hmc.edu/"&gt;college matter&lt;/a&gt; with &lt;a href="http://rowdyrover.blogspot.com/"&gt;Ed Hager&lt;/a&gt; and considered with the &lt;a href="http://kirklea.blogspot.com/2005/05/bainbridge-blogger-bashvenue-chez.html"&gt;disgracefully&lt;/a&gt; English and clever &lt;a href="http://kirklea.blogspot.com/"&gt;Chris Holmes&lt;/a&gt; swapping my given name for that of my &lt;a href="http://flickr.com/"&gt;photo-sharing service&lt;/a&gt;. Others (like &lt;a href="http://casdra.com/blog/"&gt;Mike Houser&lt;/a&gt; and &lt;a href="http://walkerw.blogspot.com/"&gt;Molly and Walker Willingham&lt;/a&gt;) I had to observe from a distance &amp;mdash; two hours, it seems, truly can fly.&lt;/p&gt;

&lt;p&gt;To paraphrase my logorrhea, I had a surprisingly and relentlessly good time. Next time, &lt;a href="http://www.ivotedforgeorge.com/"&gt;Gillon&lt;/a&gt;, &lt;a href="http://gouldweb.net/sarako/"&gt;Sarah&lt;/a&gt;, &lt;a href="http://expresos.livejournal.com/"&gt;Sean&lt;/a&gt;, &lt;i&gt;et al&lt;/i&gt;?&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/life/bainbridge_blogger_bash.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/audio/ttis.html">
    <title>Triach Trio &amp;amp; Ivan Sly</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/twI4BPV7u6s/ttis.html</link>
    <description>


Capra hircus is proud to announce and distribute the debut album of the local improvisational, progressive, slightly a capella band Triach Trio &amp; Ivan Sly...</description>
    <dc:subject>/audio</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-05-02T03:52:11Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/audio_ttis" />
    <content:encoded>
&lt;a href="http://caprahircus.ws/files/ttis/front.png"&gt;&lt;img src="http://caprahircus.ws/files/ttis/front_mini.png" width="150" height="150" alt="Triach Trio &amp;amp; Ivan Sly album cover" style ="float:right; border:0px; margin: 0px 0px 1em 1em;" /&gt;&lt;/a&gt;

&lt;p&gt;&lt;i&gt;Capra hircus&lt;/i&gt; is proud to announce and distribute the debut album of the local improvisational, &lt;a href="http://en.wikipedia.org/wiki/Progressive_music"&gt;progressive&lt;/a&gt;, slightly &lt;i&gt;a capella&lt;/i&gt; band &lt;b&gt;Triach Trio &amp;amp; Ivan Sly&lt;/b&gt;. It includes nine tracks, totaling 36 minutes and 41 seconds:&lt;/p&gt;

&lt;ol&gt;

    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42147960&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42147960&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Five Fingers to Face (3:38)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42237530&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42237530&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; $2.00 Bagel (3:58)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42209241&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42209241&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Bird in the Room (3:43)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=55483674&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=55483674&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; NYL&amp;hellip; What? (2:53)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=55484190&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=55484190&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Jam Session (6:51)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42556106&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42556106&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Free-Achin (3:02)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42352922&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42352922&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Feetsies (1:30)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42215974&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42215974&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; Joel (1:05)&lt;/li&gt;
    
    &lt;li&gt;&lt;object width="13" height="13" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" allowNetworking="internal"&gt; &lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;param name="FlashVars" value="resourceID=42736057&amp;flp=true" /&gt; &lt;param name="movie" value="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;embed wmode="transparent" src="http://static.last.fm/webclient/inline/6/inlinePlayer.swf" quality="high" FlashVars="resourceID=42736057&amp;flp=true" bgcolor="#ffffff" width="13" height="13" name="inlinePlayer" allowNetworking="internal" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt; &lt;/object&gt; The End (10:06)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The band would like to sincerely apologize for track seven, &amp;#8220;Feetsies&amp;#8221;, and humbly request that you skip over or delete it. Triach Trio &amp;amp; Ivan Sly are:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="http://flickr.com/photos/bombardier/9824465/"&gt;Alex Fermanez&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.livejournal.com/users/fernazo/"&gt;Matt Wohlford&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://flickr.com/photos/bombardier/5473160/"&gt;Tim Spenser&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://flickr.com/photos/bombardier/"&gt;Joel Bombardier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Download the tracks from the &lt;a href="http://www.last.fm/music/Triach%2BTrio%2B%2526%2BIvan%2BSly/Triach%2BTrio%2B%2526%2BIvan%2BSly"&gt;last.fm album page&lt;/a&gt;. View or print the &lt;a href="http://caprahircus.ws/files/ttis/front.png"&gt;front&lt;/a&gt; and &lt;a href="http://caprahircus.ws/files/ttis/back.png"&gt;back&lt;/a&gt; cover art in glorious &lt;a href="http://www.libpng.org/pub/png/"&gt;PNG-24&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;d like the album as 128kB/s &lt;a href="http://www.apple.com/mpeg4/aac/"&gt;AAC&lt;/a&gt; (25.8 MB) or even as &lt;a href="http://flac.sourceforge.net/"&gt;FLAC&lt;/a&gt; or &lt;a href="http://www.apple.com/itunes/import.html"&gt;ALAC&lt;/a&gt;, let me know in the comments. Likewise for larger versions of the cover art. The music and artwork are provided under the &lt;a href="http://creativecommons.org/"&gt;Creative Commons&lt;/a&gt; &lt;a href="http://creativecommons.org/licenses/by/2.0/"&gt;Attribution 2.0&lt;/a&gt; license.&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/audio/ttis.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/linkage/ferry.html">
    <title>Bainbridge-Seattle ferry, caught on film</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/CmopRyPX24M/ferry.html</link>
    <description>

This is probably not remarkable enough for Google Sightseeing, but the satellite used to photograph the Earth for Google Maps caught a ferry en route from Bainbridge to Seattle...</description>
    <dc:subject>/linkage</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-04-25T05:44:16Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/linkage_ferry" />
    <content:encoded>&lt;a href="http://maps.google.com/maps?ll=47.618490,-122.496636&amp;amp;spn=0.005558,0.007918&amp;amp;t=k&amp;amp;hl=en"&gt;&lt;img src="http://caprahircus.ws/files/ferry.png" width="200" height="222" style="float:right; margin:0px 0px 0px 1em; border:0px;" alt="ferry from satellite" /&gt;&lt;/a&gt;

&lt;p&gt;This is probably not remarkable enough for &lt;a href="http://www.shreddies.org/gmaps/"&gt;Google Sightseeing&lt;/a&gt;, but the satellite used to photograph the Earth for &lt;a href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt; caught a &lt;a href="http://www.wsdot.wa.gov/ferries/"&gt;ferry&lt;/a&gt; &lt;i&gt;en route&lt;/i&gt; from &lt;a href="http://www.ci.bainbridge-isl.wa.us/"&gt;Bainbridge&lt;/a&gt; to &lt;a href="http://seattle.gov/"&gt;Seattle&lt;/a&gt;. The best thing about &lt;a href="http://maps.google.com/maps?ll=47.618490,-122.496636&amp;amp;spn=0.005558,0.007918&amp;amp;t=k&amp;amp;hl=en"&gt;the satellite photo&lt;/a&gt; is an astounding depiction of the wake caused by the ferry. An enormous arc is left behind the ferry. Multitudes of ribs coming off of that let you sympathize with &lt;a href="http://www.bainbridgereview.com/portals-code/searchd.cgi?id=53718&amp;amp;papername=bainbridge&amp;amp;tbname=storya_2000"&gt;those whiny Wing Pointers&lt;/a&gt; (no offense is intended to any individual Wing Pointer). A sight worth seeing. Also, a buoy is visible.&lt;/p&gt;

&lt;p&gt;Discussion question: Is the smaller line of wake to the ferry&amp;#8217;s port side (our right) a Coast Guard escort?&lt;/p&gt;

&lt;br style="clear:right;" /&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/linkage/ferry.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/thought/tech/php_irritations.html">
    <title>PHP irritations</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/iic1BnR0Mik/php_irritations.html</link>
    <description>This is the second in a mini-series of two posts that I&#x2019;m calling &#x201c;Posts in Which I Gripe About Widely Appreciated Work&#x201d;...</description>
    <dc:subject>/thought/tech</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-04-17T00:37:55Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/thought_tech_php_irritations" />
    <content:encoded>&lt;p style = "font-style: italic; font-size: smaller;"&gt;This is the second in a mini-series of two posts that I&amp;#8217;m calling &amp;#8220;Posts in Which I Gripe About Widely Appreciated Work&amp;#8221;. These posts are very negative, and for that I apologize, but they are also true (in the sense that they accurately represent my feelings). If I am wrong about any points, it would be more productive to point this out to me than not to point it out. This is because the apparent veracity of these gripes makes me, generally speaking, unhappy &amp;mdash; if one or more is false, I will almost certainly be happier and, presumably, having set a fool on the right path, you will, too.&lt;/p&gt;

&lt;p&gt;I only occasionally need to come into contact with &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt;, and now is one of those occasions. I can&amp;#8217;t help but think, with every syntactical weirdness that I need to circumvent, that PHP is the &lt;a href="http://en.wikipedia.org/wiki/Geo_Metro"&gt;Geo Metro&lt;/a&gt; of programming languages. Its unfathomable popularity is one of the great life questions that I hope one day to answer for humankind so that, in the future, such a colossal mistake will not be made again.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Some functions (&lt;a href="http://www.php.net/print"&gt;print&lt;/a&gt;, &lt;a href="http://www.php.net/echo"&gt;echo&lt;/a&gt;, &amp;hellip;) aren&amp;#8217;t actually functions but &amp;#8220;language constructs&amp;#8221; and don&amp;#8217;t need parentheses. The rest require them. Oy.&lt;/li&gt;
    &lt;li&gt;I can&amp;#8217;t treat lists as arrays. Specifically, I can&amp;#8217;t do this: &lt;code&gt;$id = (mysql_fetch_row($qry))[0]&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.bitstorm.org/edwin/en/php-sucks/"&gt;Everybody&lt;/a&gt; &lt;a href="http://tnx.nl/php"&gt;says&lt;/a&gt; &lt;a href="http://n3dst4.com/articles/phpannoyances/"&gt;so&lt;/a&gt;, but function names and parameters are esoteric and inconsistent. In some ways, there are just too many (without namespaces!).
        &lt;ul&gt;
            &lt;li&gt;Take, for example, the inconsistency in parameter order between &lt;a href="http://www.php.net/manual/en/ref.pcre.php"&gt;regular expression functions&lt;/a&gt; and &lt;a href="http://www.php.net/manual/en/function.strpos.php"&gt;&lt;code&gt;strpos&lt;/code&gt;&lt;/a&gt;-related functions.&lt;/li&gt;
            &lt;li&gt;An example of another symptom of function bloat is &lt;a href="http://www.zend.com/php5/"&gt;PHP 5&lt;/a&gt;&amp;#8217;s &lt;a href="http://www.php.net/manual/en/function.strripos.php"&gt;&lt;code&gt;strripos&lt;/code&gt;&lt;/a&gt; function. That would be &lt;code&gt;strpos&lt;/code&gt; (already vague enough) with two mutations, each signified by a single letter &lt;em&gt;shoved right in the middle of the function name&lt;/em&gt;: find-from-&lt;b&gt;r&lt;/b&gt;ight and case-&lt;b&gt;i&lt;/b&gt;nsensitive.&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Entirely aside from the aforementioned lack of namespaces, PHP scoping is absurd. The &lt;code&gt;global&lt;/code&gt; keyword is a joke, and it&amp;#8217;s not a funny one (no inline assignment, globals aren&amp;#8217;t really very global and need to be imported&amp;hellip;). Scope has two modes: &amp;#8220;global&amp;#8221; and function-local (no other blocks).&lt;/li&gt;
    &lt;li&gt;Arrays are actually hashes! This is infuriating!&lt;/li&gt;
    &lt;li&gt;Regular expression replacement functions do not return a useful success value. (I suppose that this &lt;em&gt;might&lt;/em&gt; be okay for people who are not used to &lt;a href="http://www.perl.com/"&gt;Perl&lt;/a&gt;, but it really seems inefficient.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I must acknowledge that everything seems to &lt;em&gt;work&lt;/em&gt;. As with most high-level, dynamically typed languages, PHP is (for the most part) very forgiving, once you can figure out what you&amp;#8217;re doing in any given situation.&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/thought/tech/php_irritations.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/thought/tech/i_use_launchbar.html">
    <title>I use LaunchBar</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/Su7Hp9u_LJQ/i_use_launchbar.html</link>
    <description>This is the first in a mini-series of two posts that I&#x2019;m calling &#x201c;Posts in Which I Gripe About Widely Appreciated Work&#x201d;...</description>
    <dc:subject>/thought/tech</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-04-17T00:32:40Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/thought_tech_i_use_launchbar" />
    <content:encoded>&lt;p style = "font-style: italic; font-size: smaller;"&gt;This is the first in a mini-series of two posts that I&amp;#8217;m calling &amp;#8220;Posts in Which I Gripe About Widely Appreciated Work&amp;#8221;. These posts are very negative, and for that I apologize, but they are also true (in the sense that they accurately represent my feelings). If I am wrong about any points, it would be more productive to point this out to me than not to point it out. This is because the apparent veracity of these gripes makes me, generally speaking, unhappy &amp;mdash; if one or more is false, I will almost certainly be happier and, presumably, having set a fool on the right path, you will, too.&lt;/p&gt;

&lt;p&gt;There is perhaps no belief held more universally and more certainly among advanced &lt;a href="http://www.apple.com/macosx/"&gt;Mac OS X&lt;/a&gt; users than that in the rapid resource access software that they use (a belief that will be widely shaken next week with the advent of &lt;a href="http://www.apple.com/macosx/features/spotlight/"&gt;Spotlight&lt;/a&gt;). I use &lt;a href="http://www.obdev.at/products/launchbar/"&gt;LaunchBar&lt;/a&gt;. However very neat some of its myriad of features are, &lt;a href="http://quicksilver.blacktree.com/"&gt;QuickSilver&lt;/a&gt; annoys me in little ways. They follow.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Web searches are closer at hand (typing a space makes more sense to me and involves moving my hands less than typing tab twice to get to the search field).&lt;/li&gt;
    &lt;li&gt;The kinds of items that can be accessed in QuickSilver with the right arrow and the tab key seem inconsistent. For example, one right-arrows &lt;a href="http://www.apple.com/itunes/"&gt;iTunes&lt;/a&gt; to get to &amp;#8220;show playing track&amp;#8221; but tabs it to &amp;#8220;open&amp;#8221; (actions, as opposed to items, can be in both places).&lt;/li&gt;
    &lt;li&gt;QuickSilver attempts to categorize too much. LaunchBar is a &lt;a href="http://www.boingboing.net/2005/03/16/etech_notes_folksono.html"&gt;beautiful mess&lt;/a&gt;. For example, all of my iTunes tracks, albums, artists and composers are munged right into LaunchBar&amp;#8217;s main configuration. When I used QuickSilver, I had to set up different esoteric key combinations just to avoid having to find the &amp;#8220;iTunes Music&amp;#8221; item, right-arrow into it, down-arrow to the &amp;#8220;Browse Artists&amp;#8221; item, move into that, then double-tab to &amp;#8220;Search Contents&amp;#8221; (and all this with the downloadable, non-default iTunes module). I never really managed to remember which key combination was albums, which was artists, and which contained tracks.&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/thought/tech/i_use_launchbar.html</feedburner:origLink></item>

  <item rdf:about="http://caprahircus.ws/thought/tech/obfuscation.html">
    <title>Obfuscation 102</title>
    <link>http://feedproxy.google.com/~r/caprahircus/~3/_PQzcIEuTbo/obfuscation.html</link>
    <description>Matthew Russell over at O&#x2019;Reilly&#x2019;s MacDevCenter...</description>
    <dc:subject>/thought/tech</dc:subject>
    <dc:creator>Adrian Sampson</dc:creator>
    <dc:date>2005-04-11T05:11:43Z</dc:date>
    <trackback:ping rdf:resource="http://tb/tb.cgi/thought_tech_obfuscation" />
    <content:encoded>&lt;p&gt;&lt;a href="http://www.macdevcenter.com/pub/au/2054"&gt;Matthew Russell&lt;/a&gt; over at &lt;a href="http://www.oreillynet.com/"&gt;O&amp;#8217;Reilly&lt;/a&gt;&amp;#8217;s &lt;a href="http://www.macdevcenter.com/"&gt;MacDevCenter.com&lt;/a&gt; published Friday an article called &lt;a href="http://www.macdevcenter.com/pub/a/mac/2005/04/08/code.html"&gt;&amp;#8220;Protect Your Source Code: Obfuscation 101&amp;#8221;&lt;/a&gt;. I&amp;#8217;m sure that Mr. Russell had wholesome intentions &amp;mdash; be they screamingly capitalist intentions &amp;mdash; but I must take issue with his message. No, I&amp;#8217;m not going to complain about &lt;a href="http://slashdot.org/features/980720/0819202.shtml"&gt;security through obscurity&lt;/a&gt; (which is an &lt;a href="http://www.bastille-linux.org/jay/obscurity-revisited.html"&gt;often abused concept&lt;/a&gt; anyway), nor speed, nor his forgivable oversimplification of the compilation process.&lt;/p&gt;

&lt;p&gt;I instead ask you to refrain, except in extreme circumstances, from obfuscating your code. No matter how perfect you think you make your project, you won&amp;#8217;t have time or resources to respond to every demand from your users. There will be features to add and bugs to fix that you can&amp;#8217;t (or won&amp;#8217;t) implement yourself. I realize that it&amp;#8217;s sometimes implausible to go &lt;a href="http://www.opensource.org/"&gt;open source&lt;/a&gt;, but leaving comprehensible symbols in your code can open a world of possibilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.apple.com/ichat/"&gt;iChat&lt;/a&gt; is my &lt;a href="http://www.aim.com/"&gt;AIM&lt;/a&gt; client of choice, and I, certainly, could never duplicate the work that has been put into it. It lacks, however, an &amp;#8220;away message&amp;#8221; functionality that other clients have come to expect: status messages cannot be sent automatically when messages are received. So, I wrote &lt;a href="http://pygmysoftware.com/software/icar/"&gt;iCAR&lt;/a&gt;, the &lt;b&gt;iC&lt;/b&gt;hat &lt;b&gt;A&lt;/b&gt;uto-&lt;b&gt;R&lt;/b&gt;eply to make iChat a more complete client. Had it been obfuscated as Mr. Russell suggests, I&amp;#8217;d never be able to guess which symbols in iChat needed patching to implement auto-reply functionality. Digging through symbols is bewildering enough already (for some reason, a great number of class names in iChat are prefixed, inexplicably, with &amp;#8220;Fez&amp;#8221;); code obfuscation would make the exercise impossible. Beyond iCAR, straightforward compilation has made &lt;a href="http://culater.net/software/PithHelmet/PithHelmet.php"&gt;innumerable&lt;/a&gt; &lt;a href="http://www.tildesoft.com/Misc.html"&gt;clever&lt;/a&gt; &lt;a href="http://www.command-tab.com/index.php/plaintextpaste/"&gt;hacks&lt;/a&gt; possible and life as a modern computer user just a little more bearable.&lt;/p&gt;

&lt;p&gt;So, please, just do me a favor: leave your code comprehensible. On behalf of your end users, I remove my hat.&lt;/p&gt;</content:encoded>
  <feedburner:origLink>http://caprahircus.ws/thought/tech/obfuscation.html</feedburner:origLink></item>


<cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
  <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
  <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
  <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
</cc:License>

</rdf:RDF>
