<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>A man without a goal is like a ship without a rudder.</title>
	<atom:link href="http://shipqc.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://shipqc.wordpress.com</link>
	<description>This is a return to my roots, of a sort. Sometimes, I need to talk to do.</description>
	<lastBuildDate>Sun, 31 May 2009 15:24:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='shipqc.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>A man without a goal is like a ship without a rudder.</title>
		<link>http://shipqc.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://shipqc.wordpress.com/osd.xml" title="A man without a goal is like a ship without a rudder." />
	<atom:link rel='hub' href='http://shipqc.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Re: Attack of the Zombie Photos</title>
		<link>http://shipqc.wordpress.com/2009/05/31/re-attack-of-the-zombie-photos/</link>
		<comments>http://shipqc.wordpress.com/2009/05/31/re-attack-of-the-zombie-photos/#comments</comments>
		<pubDate>Sun, 31 May 2009 15:24:01 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[say]]></category>

		<guid isPermaLink="false">http://ship.quadhome.com/?p=190</guid>
		<description><![CDATA[I wish photo deletion on social networks didn’t work. But, I think of the whole Internet as an immutable data store. Let’s not kid ourselves. Even in a world where our uploads are eternally “cached,” they’re still temporary. They may &#8230; <a href="http://shipqc.wordpress.com/2009/05/31/re-attack-of-the-zombie-photos/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=190&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wish <a href="http://www.lightbluetouchpaper.org/2009/05/20/attack-of-the-zombie-photos/">photo deletion on social networks</a> <strong>didn’t</strong> work. But, I think of the whole Internet as an immutable data store.</p>
<p>Let’s not kid ourselves. Even in a world where our uploads are eternally “cached,” they’re still temporary. They may not disappear immediately&mdash; or even in a year. But, that data is <a href="http://aws.amazon.com/s3/#pricing">an easily quantifiable business cost</a>.</p>
<p>I doubt many photos uploaded to Facebook will exist in twenty years. And, that’s when I’d most love to look at them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/190/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/190/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/190/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=190&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2009/05/31/re-attack-of-the-zombie-photos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Frustrating fragments</title>
		<link>http://shipqc.wordpress.com/2009/05/27/frustrating-fragments/</link>
		<comments>http://shipqc.wordpress.com/2009/05/27/frustrating-fragments/#comments</comments>
		<pubDate>Wed, 27 May 2009 17:28:47 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[say]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://ship.quadhome.com/?p=181</guid>
		<description><![CDATA[I&#8217;m wistful for when this was all I needed&#8230; #!/usr/bin/env python def main(): pass if __name__ == '__main__': main() Although, then it came out: int main(void) { return 0; } I wonder how many of these my fingers have memorized? &#8230; <a href="http://shipqc.wordpress.com/2009/05/27/frustrating-fragments/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=181&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m wistful for when this was all I needed&#8230;</p>
<pre><code>#!/usr/bin/env python

def main():
    pass

if __name__ == '__main__':
    main()</code></pre>
<p>Although, then it came out:</p>
<pre><code>int main(void) {
	return 0;
}</code></pre>
<p>I wonder how many of these my fingers have memorized?</p>
<pre><code>] 10 END
] RUN</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/181/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=181&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2009/05/27/frustrating-fragments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Party (an implementation of Overhear)</title>
		<link>http://shipqc.wordpress.com/2009/05/17/party-an-implementation-of-overhear/</link>
		<comments>http://shipqc.wordpress.com/2009/05/17/party-an-implementation-of-overhear/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:20:52 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[think]]></category>

		<guid isPermaLink="false">http://ship.quadhome.com/?p=157</guid>
		<description><![CDATA[Overhear is a proposal for a new type of Internet socialization. This is my thinking about how to do it using the existing context of instant messaging (IM). At its heart, IM is person to person. Almost all IM systems &#8230; <a href="http://shipqc.wordpress.com/2009/05/17/party-an-implementation-of-overhear/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=157&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://lion.posterous.com/overhear-which-is-not-twitter">Overhear</a> is a proposal for a new type of Internet socialization. This is my thinking about how to do it using the existing context of instant messaging (IM).</p>
<p>At its heart, IM is person to person. Almost all IM systems have some form of group chat. But, they&#8217;re anemic additions because there are no established cues for their use.</p>
<p>In real life, conversations are initiated&mdash;someone just starts talking! And any growth beyond two people takes on a life of its own. There are a couple ways: invitation, or presumption. Most IM programs offer an invitation action; but, none offer a presumption action.</p>
<p>Think about how it works now. Your buddy list is all your contacts and their availability status. The status is the potential for responding to you. By selecting a buddy, you are starting a new and private conversation. Few, if any, programs provide an easy way to invite a buddy to an already existing conversation.</p>
<p>Joining by presumption means knowing about active conversations. So, I propose a new type of availability status: party-ness. This announces the buddies with whom you&#8217;re currently chatting.</p>
<p>Of course, a privacy issue arises here. Few want any member of their buddy list to know with whom they&#8217;re conversing. Preferably, a buddy would only be able to recognize a &#8220;party&#8221; if they knew the participants. My rough thinking is of broadcasting a <a href="http://en.wikipedia.org/wiki/Bloom_filter">bloom filter</a> filled from the names of your active chat partners.</p>
<p>With this new information, a buddy list can include the current conversations between your friends. When you select one, the participants are asked if you may join in. Accept or reject, drama will ensue. And isn&#8217;t that what it&#8217;s all about?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/157/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/157/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/157/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=157&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2009/05/17/party-an-implementation-of-overhear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Moxie Makes Mixtapes!</title>
		<link>http://shipqc.wordpress.com/2008/12/18/moxie-makes-mixtapes/</link>
		<comments>http://shipqc.wordpress.com/2008/12/18/moxie-makes-mixtapes/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 23:46:04 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[done]]></category>
		<category><![CDATA[moxie]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://ship.quadhome.com/?p=118</guid>
		<description><![CDATA[When muxtape went down, the joke went &#8220;&#8230; and that is the sound of a million hackers writing their own open-source clones.&#8221; It&#8217;s a little true &#8211; several released in short order. And, when including the dozens of free mixtape &#8230; <a href="http://shipqc.wordpress.com/2008/12/18/moxie-makes-mixtapes/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=118&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When <a href="http://muxtape.com/">muxtape</a> went down, the joke went &#8220;&#8230; and that is the sound of a million hackers writing their own open-source clones.&#8221; It&#8217;s a little true &#8211; several released in short order. And, when including the dozens of free mixtape websites, the market is seemingly cornered.</p>
<p>I&#8217;d like to introduce <a href="http://pypi.python.org/pypi/moxie">moxie</a>.</p>
<p>moxie is to muxtape clones what <a href="http://ikiwiki.info/">ikiwiki</a> is to MediaWiki and friends.</p>
<p>I have been using it to power my <a href="http://mixtape.quadhome.com/">monthly mixtape series</a>. Which means, it&#8217;s <a href="http://github.com/quad/moxie/tree/master/README.md">UNIX-style easy</a> to use.</p>
<p>And for the best of you, it&#8217;s simple to <a href="http://github.com/quad/moxie">grab it from github.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=118&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/12/18/moxie-makes-mixtapes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Lenovo Sucks</title>
		<link>http://shipqc.wordpress.com/2008/10/03/lenovo-sucks/</link>
		<comments>http://shipqc.wordpress.com/2008/10/03/lenovo-sucks/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 18:02:41 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[say]]></category>
		<category><![CDATA[thinkpad lenovo]]></category>

		<guid isPermaLink="false">http://shipqc.wordpress.com/?p=111</guid>
		<description><![CDATA[I could describe my terrible customer experience that resulted in me canceling my order, and purchasing a nice HP. But, I found a <a href="http://decav.com/blogs/andre/archive/2007/06/27/lenovo-quot-chinese-quality-quot-abhorrant-customer-service.aspx">blog post</a> that summarized it quite nicely... in mid-2007. <a href="http://shipqc.wordpress.com/2008/10/03/lenovo-sucks/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=111&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My laptop needs to go in for repair.</p>
<p>Unfortunately, I&#8217;m a slave to our machine masters. I can&#8217;t operate for an extended period of time without a computer. So, I took this as an &#8220;opportunity!&#8221; I have wanted a Thinkpad T61 for a while; but, they don&#8217;t exist anymore. Lenovo has replaced that model with their new T500s.</p>
<p>I used my Microsoft discount to put in an order! And, everything went downhill from there.</p>
<p>I could describe my terrible customer experience that resulted in my order cancelation (and purchasing a <a href="http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/321957-321957-64295-321838-89315-3687777.html">nice HP</a>). But, I found a <a href="http://decav.com/blogs/andre/archive/2007/06/27/lenovo-quot-chinese-quality-quot-abhorrant-customer-service.aspx">blog post</a> that summarized it quite nicely&#8230; in mid-2007:</p>
<blockquote><p>
I have run into the following issues that made for a miserable experience with Lenovo.  I hope that the technical support does not have the same issues, should I need to call them:</p>
<ol>
<li>30 minute or more wait times on the phone to talk to a representitive</li>
<li>Sales people giving me very different answers (one claiming there are no production snags and it should ship in a week or two, another claiming 4 weeks)</li>
<li>An estimated ship date of 4 weeks (4/20) after I purchased, without an explaination.</li>
<li>An &#8220;order status&#8221; stating &#8220;in process.&#8221;  When I called to cancel, I was told it was already sent to &#8220;configuration&#8221;.  Does this mean it was going to be shipped earlier rather than later?  That may have kept me from cancelling my order.</li>
<li>Numerous problems with the website, including:
<ol>
<li>broken links (ex: &#8220;contact&#8221; on the bottom of the order status form)</li>
<li>Session timeouts that erase your shopping cart</li>
<li>Broken &#8220;chat with a sales representitive&#8221; on the sales page</li>
<li>TYPOS INCLUDING &#8220;SXGA&#8221; INSTEAD OF &#8220;SXGA+&#8221; that no one cares enough to resolve</li>
</ol>
</li>
<li>Fake, on-going sales that keep changing names, pretending that the product is &#8220;on sale&#8221; to lure customers.</li>
</ol>
</blockquote>
<p>Yup, that sounds about right.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=111&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/10/03/lenovo-sucks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Functional over-engineering</title>
		<link>http://shipqc.wordpress.com/2008/09/02/functional-over-engineering/</link>
		<comments>http://shipqc.wordpress.com/2008/09/02/functional-over-engineering/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 06:45:16 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[say]]></category>

		<guid isPermaLink="false">http://shipqc.wordpress.com/?p=107</guid>
		<description><![CDATA[It&#8217;s a simple and common problem: You have a directory structure with files in it. You want to find all the files with certain extensions. &#8220;jpg&#8221;, &#8220;jpeg&#8221;, &#8220;png&#8221; and &#8220;gif&#8221; for argument&#8217;s sake. The language for this exercise is Python. &#8230; <a href="http://shipqc.wordpress.com/2008/09/02/functional-over-engineering/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=107&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a simple and common problem:</p>
<p>You have a directory structure with files in it. You want to find all the files with certain extensions. &#8220;jpg&#8221;, &#8220;jpeg&#8221;, &#8220;png&#8221; and &#8220;gif&#8221; for argument&#8217;s sake.</p>
<p>The language for this exercise is Python.</p>
<p>It&#8217;s important to <a href="http://www.25hoursaday.com/weblog/2008/08/31/DevelopersUsingLibrariesIsNotASignOfWeakness.aspx">use the standard library</a>. A search for something like &#8220;<a href="http://www.google.com/search?q=python+directory+find+recursive">python directory find recursive</a>&#8221; will lead you very quickly to <a href="http://docs.python.org/lib/os-file-dir.html#l2h-2717">os.walk</a>. Which is exactly what you want for <em>walking</em> the directory structure.</p>
<p>But, there is the file extension to be checked. <a href="http://docs.python.org/lib/string-methods.html#l2h-239">endswith</a> is not appropriate because it&#8217;s case-sensitive. What you want is <a href="http://docs.python.org/lib/module-fnmatch.html">fnmatch</a>. You know that because you either glanced at <a href="http://docs.python.org/lib/filesys.html">File and Directory Access</a> when you found the <a href="http://docs.python.org/lib/">standard library documentation</a>. Or, because you searched for something like &#8220;<a href="http://www.google.com/search?q=python+match+filename">python match filename</a>.&#8221;</p>
<p>We&#8217;re ready to code. Nothing complex:</p>
<pre><code>def image_files_1(directory):
    for root, dirs, files in os.walk(directory):
        for extension in '*.jpeg', '*.jpg', '*.png', '*.gif':
            for fn in fnmatch.filter(files, extension):
                yield os.path.join(root, fn)</code></pre>
<p>If this was a barrier to getting your job done, mission complete. But, dude, iterators and list comprehensions! And, when all you have is a hammer&#8230;</p>
<pre><code>def image_files_2(directory):
    return itertools.chain(*[[os.path.join(root, fn)
                              for fn in fnmatch.filter(files, '*.jpg') +
                                        fnmatch.filter(files, '*.jpeg') +
                                        fnmatch.filter(files, '*.png') +
                                        fnmatch.filter(files, '*.gif')]
                             for root, dirs, files in os.walk(directory)])</code></pre>
<p>But, what about new file formats?</p>
<pre><code>def image_files_3(directory, extensions):
    return itertools.chain(*[[os.path.join(root, fn)
                              for fn in sum([fnmatch.filter(files, '*.' + ext)
                                             for ext in extensions],
                                            [])]
                             for root, dirs, files in os.walk(directory)])</code></pre>
<p>I am, appropriately, embarrassed that I wrote any of this.</p>
<p>Embarrassed enough to share.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shipqc.wordpress.com/107/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shipqc.wordpress.com/107/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=107&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/09/02/functional-over-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Weaning myself off Tara</title>
		<link>http://shipqc.wordpress.com/2008/06/18/weaning-myself-off-tara/</link>
		<comments>http://shipqc.wordpress.com/2008/06/18/weaning-myself-off-tara/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 05:10:28 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[todo]]></category>

		<guid isPermaLink="false">http://shipqc.wordpress.com/?p=99</guid>
		<description><![CDATA[As far back as I can remember, I wanted a computer of my own. The first computer I was given wide latitude upon was my mother&#8217;s Apple IIc. Arguably, my experiences on it fundamentally broke me for all future computing. &#8230; <a href="http://shipqc.wordpress.com/2008/06/18/weaning-myself-off-tara/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=99&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As far back as I can remember, I wanted a computer of my own.</p>
<p>The first computer I was given wide latitude upon was my mother&#8217;s <a href="http://en.wikipedia.org/wiki/Apple_IIc">Apple IIc</a>. Arguably, my experiences on it fundamentally broke me for all future computing. After it died, the first time, I got time on an <a href="http://en.wikipedia.org/wiki/IBM_Personal_Computer_XT">XT</a>.</p>
<p>The first machine I had exclusive control over was a 386. By that point, I had stolen time on computers wherever and whenever I could. And, I had accessed the Internet thanks to the lax network security at the University of Washington. I found Linux. I named the 386: &#8220;fuzzy toilet&#8221;</p>
<p>I&#8217;ve since standardized my naming scheme: women I had <strong>crushes</strong> on and got <strong>nowhere</strong> with.</p>
<p>Years and women passed. The last desktop I purchased was in 1999. She was dubbed Tara. And, with her, I learned that data is more important than the hardware containing it.</p>
<p>The originally purchased hardware for Tara doesn&#8217;t exist. The motherboards, CPUs, hard drives, video cards, sound cards, network cards, keyboards, mice, and monitors have all warn out and been replaced. Many times. But, the original installation of Linux on Tara still exists.</p>
<p><code>scott@tara:~$ [0] ls -al .bash_logout<br />
-rw-r--r-- 1 scott scott 24 1999-07-20 19:09 .bash_logout</code></p>
<p>That&#8217;s a heart warming story of a boy and his computer.</p>
<p>But, Scott got older and finally started outgrowing Tara. My friend <a href="http://www.williamphenryjr.com/">William</a> pressured me into purchasing a laptop. The day I installed Ubuntu on Geneva was the last day of my preferred use of desktops. It was a matter of time before I transitioned completely:</p>
<p><code>scott@tara:~/.gaim/logs$ [0] find ./ -name ????-??-??.*.txt -printf "%f\n" | sort | tail -1 | cut -c -10<br />
2005-05-31</code></p>
<p>Which left <a href="http://tara.quadhome.com/~scott/">Tara as a server</a>. E-mail, web, storage, shell and long running tasks. Damn, girl!</p>
<p>But, for the last three years I&#8217;ve been neglectful. Yes, there are backups. And <a href="http://smartmontools.sourceforge.net/">monitoring</a>. However, I don&#8217;t exactly feel comfortable with a large part of my life sitting on machine with no eyes on it and hardware older than children that can speak.</p>
<p>Which is a very long way of saying I&#8217;ve been <em>transitioning my services</em> off Tara. To other members of my increasing harem. And, this gives me an excuse to talk about virtualization.</p>
<p>Stay tuned.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shipqc.wordpress.com/99/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shipqc.wordpress.com/99/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=99&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/06/18/weaning-myself-off-tara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>bzrshelve, a punchline to a bad joke</title>
		<link>http://shipqc.wordpress.com/2008/06/17/bzrshelve-a-punchline-to-a-bad-joke/</link>
		<comments>http://shipqc.wordpress.com/2008/06/17/bzrshelve-a-punchline-to-a-bad-joke/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 08:02:48 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[done]]></category>
		<category><![CDATA[bazaar]]></category>
		<category><![CDATA[bzrshelve]]></category>
		<category><![CDATA[gitshelve]]></category>
		<category><![CDATA[hgshelve]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://shipqc.wordpress.com/?p=98</guid>
		<description><![CDATA[The joke has been long coming. Back when I was still on reddit, a short meme hit where someone wrote a little hack that made frontpage. The title is what must have sold it, as there wasn&#8217;t any there &#8211; &#8230; <a href="http://shipqc.wordpress.com/2008/06/17/bzrshelve-a-punchline-to-a-bad-joke/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=98&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The joke has been long coming.</p>
<p>Back when I was still on reddit, a short meme hit where someone wrote a little hack that made frontpage. The title is what must have sold it, as there wasn&#8217;t any there &#8211; <em>there</em>.</p>
<p>&#8220;Using Git as a versioned data store in Python&#8221; aka <a href="http://www.newartisans.com/blog_files/git.versioned.data.store.php">gitshelve</a>.</p>
<p>A few days later, of course, <a href="http://piranha.org.ua/blog/2008/05/19/hgshelve/">hgshelve</a> came into existence.</p>
<p>It&#8217;s telling that the <a href="http://bazaar-vcs.org/">Bazaar</a> community never got into the action. I can imagine good arguments for both that scene being too small, or too busy getting work done.</p>
<p>Fortunately, I have no such issue. Behold: <a href="http://code.google.com/p/bzrshelve/">bzrshelve</a>.</p>
<p>And the only <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">DVCS</a> that can get the source is <a href="http://svk.bestpractical.com/">svk</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shipqc.wordpress.com/98/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shipqc.wordpress.com/98/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=98&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/06/17/bzrshelve-a-punchline-to-a-bad-joke/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>Happy Key Revocation Tuesday</title>
		<link>http://shipqc.wordpress.com/2008/06/17/happy-key-revocation-tuesday/</link>
		<comments>http://shipqc.wordpress.com/2008/06/17/happy-key-revocation-tuesday/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 07:41:35 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[done]]></category>
		<category><![CDATA[say]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dsa 1571]]></category>

		<guid isPermaLink="false">http://shipqc.wordpress.com/?p=94</guid>
		<description><![CDATA[Almost one month ago, Florian Weimer on behalf of the Debian Security Team announced one of the worst security vulnerabilities in recent history. I won&#8217;t go into a technical description of the problem itself. But, it&#8217;s interesting to note how &#8230; <a href="http://shipqc.wordpress.com/2008/06/17/happy-key-revocation-tuesday/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=94&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Almost one month ago, Florian Weimer on behalf of the Debian Security Team announced one of the <a href="http://www.debian.org/security/2008/dsa-1571">worst security vulnerabilities in recent history</a>. I won&#8217;t go into a technical description of the problem itself. But, it&#8217;s interesting to note how Debian both succeeded and failed, how this vulnerability broke the &#8220;patch to stay secure&#8221; model, and how it personally impacted me.</p>
<h2>On Debian&#8230;</h2>
<p>First, Debian is an all volunteer organization that created and maintains the largest integrated body of code. <strong>Ever.</strong> The Debian &#8220;operating system&#8221; is far larger than Microsoft Windows or Mac OS X &#8211; they can barely be compared. That a security vulnerability could lay in any package undiscovered for years is unsurprising.</p>
<p>But, once discovered, Debian&#8217;s security team promptly released an update of the affected packages fixing the flaw. In the same announcement for the update, there was an included link to a page that promised to have instructions on how to <em>actually close the holes</em>. That page wasn&#8217;t filled in until <a href="http://cvs.debian.org/webwml/english/security/key-rollover/index.wml?rev=1.46&amp;root=webwml&amp;view=log#rev1.4">over a day later</a>.</p>
<p>Of course, the <a href="http://wiki.debian.org/SSLKeys">wiki page</a> had helpful information within <a href="http://wiki.debian.org/SSLkeys?action=recall&amp;rev=1">30 minutes</a>.</p>
<blockquote><p>Are you saying getting the security update didn&#8217;t fix my computer?</p></blockquote>
<p>Yes. The problem wasn&#8217;t a matter of fixing the user&#8217;s software but fixing their <i>data</i>. The security keys they thought weren&#8217;t. The software to make new keys was provided; but, any Debian user that wasn&#8217;t subscribed to the right mailing list wouldn&#8217;t have known about the <em>further action necessary</em>. (Though, to be fair, the OpenSSH package at least warns about vulnerable keys on update.)</p>
<p>In fact, the average Debian user would be hard pressed to find any mention of the vulnerability. It wasn&#8217;t a front page news item. OpenSSL, and all dependent packages, fail to provide any alert on upgrade. Worse, the <a href="http://en.wikipedia.org/wiki/Certificate_authority">Certificate Authorities</a> still haven&#8217;t revoked certificates for compromised keys. That means the SSL aura of trust has been devalued even more.</p>
<p>It would be an interesting, and expensive, experiment to see how many CAs will <a href="http://en.wikipedia.org/wiki/Extended_Validation_Certificate">EV sign</a> one of the compromised keys.</p>
<h2>On me&#8230;</h2>
<p>Meanwhile, tonight, I finally finished with &#8220;key rollover&#8221; on all my affected services.</p>
<ul>
<li>tara: No services effected. (Too old.)</li>
<li>steak: No services effected. (Too old.)</li>
<li>megan: SSH, SMTP / IMAP, XMPP</li>
<li>resa: SSH</li>
<li>Personal keys: EECS, wsunix, Planet EECS, tara, megan, nearlyfreespeech</li>
</ul>
<p>Gosh, I hope I got everything. Each of those only took about five hours apiece.</p>
<p>Of course, some people did make it easier. I already shouted out to the wiki page earlier. But, of everything and everyone who should have been doing their jobs, one group stood out and another one embarrassed itself:</p>
<blockquote><p>From: &#8220;NearlyFreeSpeech.NET Member Support&#8221;<br />
Subject: [NearlyFreeSpeech.NET] Potentially weak ssh key detected<br />
Date: Wed, 14 May 2008 12:30:00 -0400</p>
<p>Hello</p>
<p>You are being contacted because an ssh key vulnerability in Debian-<br />
derived Linux systems has been detected that may affect you.</p>
<p>&#8230;</p></blockquote>
<p>Wow. Thanks!</p>
<blockquote><p>From: &#8220;XMPP CertMaster&#8221;<br />
Subject: XMPP SSL Certificate revoked, 09:12 pm 13 Jun 2008<br />
Date: <strong>Fri, 13 Jun 2008</strong> 21:12:48 +0300</p>
<p>This mail is intended for the person who owns a SSL Certificate from the XMPP Intermediate Certification Authority (http://www.xmpp.net).</p>
<p>Your certificate with serial number 890 has been revoked for the following reason(s):</p>
<p> &#8211; The <strong>holder / owner</strong> of the certificate requested revocation.
</p></blockquote>
<p>You can&#8217;t blame the XMPP Federation. They don&#8217;t actually run a CA, they <a href="https://xmpp.startcom.org/">subcontract</a>. I hope <a href="http://stpeter.im/">Peter</a> isn&#8217;t paying much&#8230; as I&#8217;d say him having to <a href="https://www.xmpp.net/news/2008/05/13/xmpp-ica-certificates-and-debian-openssl-vulnerability">write a notice of the vulnerability</a> was not his money&#8217;s worth.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shipqc.wordpress.com/94/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shipqc.wordpress.com/94/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=94&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/06/17/happy-key-revocation-tuesday/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
		<item>
		<title>I will never be a software architect</title>
		<link>http://shipqc.wordpress.com/2008/05/08/i-will-never-be-a-software-architect/</link>
		<comments>http://shipqc.wordpress.com/2008/05/08/i-will-never-be-a-software-architect/#comments</comments>
		<pubDate>Thu, 08 May 2008 02:14:36 +0000</pubDate>
		<dc:creator>Scott Robinson</dc:creator>
				<category><![CDATA[say]]></category>

		<guid isPermaLink="false">http://ship.quadhome.com/posts/never_be_a_software_architect/</guid>
		<description><![CDATA[Disclaimer: this may be be a Seattle area phenomenon. I have &#8220;software architect&#8221; on my resume, and it pains me. Wikipedia has a great article on what a software architect may or may not be. But, in my world, a &#8230; <a href="http://shipqc.wordpress.com/2008/05/08/i-will-never-be-a-software-architect/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=78&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Disclaimer: this may be be a Seattle area phenomenon.</em></p>
<p>I have &#8220;software architect&#8221; on my resume, and it pains me. Wikipedia has a great article on what a <a href="http://en.wikipedia.org/wiki/Chief_Software_Architect" title="Software architect">software architect</a> may or may not be. But, in my world, a software architect has the knowledge, insight and responsibility to make educated decisions about the scope and direction of a team-developed software project.</p>
<p>That was a mouthful.</p>
<p>Software architects pick frameworks. They find previously existing packages for functionality just before the rest of the team realizes they need it. And, they plan and communicate how all the moving parts will come together. They&#8217;re really-really smart.</p>
<p>Everyone wants to be a software architect. At <a href="http://startupweekend.com/" title="Startup Weekend">Seattle&#8217;s Startup Weekend</a>, no less than a third of the developers signed up as architects. And why not?! The act of creation &#8211; from art to programming &#8211; is egotistical. If you&#8217;ve ever referred to yourself as a &#8220;software engineer&#8221; with a straight face, then you&#8217;re advertising the capability to plan non-trivial projects.</p>
<p>You&#8217;re a liar.</p>
<blockquote>
<p><em>Software</em> is big. You just won&#8217;t believe how vastly, hugely, mind-bogglingly big it is. I mean, you may think it&#8217;s a long way down the road to the chemist&#8217;s, but that&#8217;s just peanuts to <em>software</em>.</p>
</blockquote>
<p>With all apologies to <a href="http://www.amazon.com/Hitchhikers-Guide-Galaxy-Douglas-Adams/dp/0345391802" title="The Hitchhiker's Guide to the Galaxy">Douglas Adams</a>. Software projects are the most complex machines created in the history of invention. You&#8217;re telling me that you can do better than Leonardo Da Vinci, Thomas Edison, or the Wright Brothers? Because each of those iconic figures were geniuses driven to create simpler machines than a web application. And each was wrong up front.</p>
<p>This isn&#8217;t a fair comparison. We have Photoshop, Digi-Key, and kit airplanes. Also, Rails!</p>
<p>Those inventors were forging into unknown territory. Customizing a CMS or integrating SAP ERP into a SOA are known quantities. It could be argued the architect exists for the partially ambiguous problems.</p>
<p>My response is a question oft heard in agile circles. I learned it from working in open source projects, corporate giants, startups and contracting.  It&#8217;s a <a href="http://en.wikipedia.org/wiki/Koan" title="Kōan">kōan</a>:</p>
<blockquote>
<p>&#8220;What features will you be adding in six months?&#8221;</p>
</blockquote>
<p>The job of software architect is an answer. Is it the right one?</p>
<ul>
<li>
<p>There is value in understanding a problem domain.<br />
But, the stakeholders in a project tautologically have that.</p>
</li>
<li>
<p>There is value in making the hard decisions.<br />
But, that is why we have team leaders.</p>
</li>
<li>
<p>There is value in planning your design.<br />
But, software structure inevitably resembles its team&#8217;s structure.</p>
</li>
</ul>
<p>&#8230; and so on.</p>
<p>The software architect exists because of the cultural need to have someone be responsible for these aspects. But it isn&#8217;t possible to satisfy these responsibilities and simultaneously attend to the details that inform future decisions. <a href="http://www.joelonsoftware.com/articles/fog0000000018.html" title="Don't Let Architecture Astronauts Scare You">Architecture astronauts</a> just don&#8217;t have the time to be any more grounded!</p>
<p>Instead? Go slow. Let the programmers make the decisions. Feed them knowledge and constraints. Try to develop a consensus among the actual stakeholders. And accept everyone&#8217;s input. That quiet intern? They go home and spend all their spare time playing with tools that handle 80% of the job.</p>
<p>I&#8217;m not arguing for agile development practices.</p>
<p>I&#8217;m arguing for considered diligence. Plan a little. Work a little. Rinse and repeat. Never let yourself slip into the tunnel-vision that comes with long cycles.</p>
<p>Because if your team cannot make responsible architectural decisions, then no one can save your project.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/shipqc.wordpress.com/78/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/shipqc.wordpress.com/78/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shipqc.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shipqc.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shipqc.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shipqc.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shipqc.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shipqc.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/shipqc.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shipqc.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shipqc.wordpress.com&amp;blog=3711724&amp;post=78&amp;subd=shipqc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://shipqc.wordpress.com/2008/05/08/i-will-never-be-a-software-architect/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1945ab4cdb87eaf5a5c906fa884c29f1?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">Quad</media:title>
		</media:content>
	</item>
	</channel>
</rss>
