<?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>objectfactory@wordpress</title>
	<atom:link href="http://objectfactory.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://objectfactory.wordpress.com</link>
	<description>An objectfactory presence in the wordpress blogosphere</description>
	<lastBuildDate>Tue, 09 Aug 2011 08:54:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='objectfactory.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>objectfactory@wordpress</title>
		<link>http://objectfactory.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://objectfactory.wordpress.com/osd.xml" title="objectfactory@wordpress" />
	<atom:link rel='hub' href='http://objectfactory.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Updated BBC iPlayer on PS3</title>
		<link>http://objectfactory.wordpress.com/2011/08/09/updated-bbc-iplayer-on-ps3/</link>
		<comments>http://objectfactory.wordpress.com/2011/08/09/updated-bbc-iplayer-on-ps3/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 08:34:29 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Leisure]]></category>
		<category><![CDATA[bbc]]></category>
		<category><![CDATA[iplayer]]></category>
		<category><![CDATA[ps3]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=108</guid>
		<description><![CDATA[The BBC yesterday launched an updated iPlayer for the PS3 platform and having quickly tried it last night I can say it finally offers a compelling user experience and a valid combination for catching up with those programs you may &#8230; <a href="http://objectfactory.wordpress.com/2011/08/09/updated-bbc-iplayer-on-ps3/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=108&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The BBC yesterday launched an updated iPlayer for the PS3 platform and having quickly tried it last night I can say it finally offers a compelling user experience and a valid combination for catching up with those programs you may have missed on the big screen. Whilst it&#8217;s still built on a combination of HTML and Javascript, it&#8217;s presented as a much richer interface and will be, I suspect, much easier to find the content you&#8217;re interested in.</p>
<p>The other major benefit is that whilst the old version was functional for simple playing programs, it didn&#8217;t work well at all with the Blu-ray Remote Control. In the old version, once you managed to get the picture into full-screen mode, touching any key would cause it to jump back to a small embedded window within the overall page. With the new version, my initial impression is that all the major control buttons on the remote control now work logically. The default is for programs to start in full-screen, albeit with an initial top-and-bottom gray information bar (letterbox format), this disappears after a few moments to leave the picture in all it&#8217;s full screen glory. If you find you want to pause a program to make that all important cup of hot beverage then just press the pause button and &#8216;hey presto&#8217; the picture is frozen, ready to resume when you&#8217;re refueled. Scanning backwards and forwards works, of a sort, but with a delay and with large incremental backwards/forwards jumps; this seems to make it difficult to accurately rewind or fast-forward in any meaningful way but it might be better than restarting the program once again.</p>
<p>Whilst it may not be perfect, it&#8217;s a big improvement over the old player.</p>
<p><a href="http://www.bbc.co.uk/blogs/bbcinternet/2011/08/bbc_iplayer_connected_tv.html">http://www.bbc.co.uk/blogs/bbcinternet/2011/08/bbc_iplayer_connected_tv.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=108&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2011/08/09/updated-bbc-iplayer-on-ps3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>A Network Attached Preamble</title>
		<link>http://objectfactory.wordpress.com/2011/06/28/a-network-attached-preamble/</link>
		<comments>http://objectfactory.wordpress.com/2011/06/28/a-network-attached-preamble/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 22:19:23 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nas]]></category>
		<category><![CDATA[sonos]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=99</guid>
		<description><![CDATA[A consequence of re-ripping my CD collection to Apple Lossless (to support my Sonos habit) is that I recently ran out of network accessible disk space. The disk space being used to this point was an adopted second hand 250GB &#8230; <a href="http://objectfactory.wordpress.com/2011/06/28/a-network-attached-preamble/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=99&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A consequence of re-ripping my CD collection to Apple Lossless (to support my Sonos habit) is that I recently ran out of network accessible disk space. The disk space being used to this point was an adopted second hand 250GB disk which was <del datetime="2011-06-28T23:00:03-00:00">un</del>lovingly housed in my 13-year old Dell Pentium II &#8216;server&#8217; machine.<br />
<em></em></p>
<p><em>As a slight aside, with the advent of multi-core processors, it&#8217;s good to know that a relic of a chip such as this can still be put into useful service; until a year or so ago, this machine was still handling most of my email and web proxy traffic.</em></p>
<p>A decision had to be made; to continue hobbling along on this (somewhat) archaic setup or to invest in some new hardware. The case housing my old server didn&#8217;t have any additional drive slots, it was after all a desktop machine circa 1998 and I didn&#8217;t really want to invest in bigger IDE disks at this stage anyway although admittedly I could have investigated a PCI SATA controller card (this wouldn&#8217;t have got away from the lack of space in the case though). I needed new storage and the question was should I buy or build a new server or look to a dedicated Network Attached Storage (NAS) device.</p>
<p>The longer I thought about it, the more requirements came out of the woodwork:</p>
<ul>
<li>Reliable fault-tolerant network attached disk storage</li>
<li>Easy to backup/restore if necessary</li>
<li>Low Power Consumption</li>
<li>Extensible &#8211; for future expansion</li>
<li>Low hassle-quotient</li>
<li>Be able to handle:</li>
<ul>
<li>Sonos (lossless) and iPod (lossy) music storage</li>
<li>Video &#8211; PS3 Streaming</li>
<li>Photos &#8211; PS3 Streaming</li>
<li>Possible future Apple TV support</li>
<li>Network Time Machine backup &#8211; currently one iMac but possibly additional wireless laptops as family needs dictate</li>
<li>Other unknowns &#8211; I &#8216;ideally&#8217; would be able to support a local &#8216;pseudo-development&#8217; server for DB2 and as a Jazz server. This is much lower priority as I&#8217;m also looking at whether Amazon EC2 could be used to provision occasional development facilities.</li>
</ul>
</ul>
<p>Throughout this process my head said &#8216;buy&#8217;, my heart said &#8216;build&#8217;&#8230;..</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=99&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2011/06/28/a-network-attached-preamble/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>Macro errors working in offline documents within RequisitePro</title>
		<link>http://objectfactory.wordpress.com/2010/10/11/macro-errors-working-in-offline-documents-within-requisitepro-2/</link>
		<comments>http://objectfactory.wordpress.com/2010/10/11/macro-errors-working-in-offline-documents-within-requisitepro-2/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 08:10:57 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Rational]]></category>
		<category><![CDATA[requirements]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[harvested]]></category>
		<category><![CDATA[requisitepro]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=85</guid>
		<description><![CDATA[When working in offline documents and RequisitePro you may experience macro errors relating to security when using the context-sensitive (right-click) menu and working with requirements. These may occur when selecting the &#8216;Requirement Properties&#8217; or &#8216;New Requirement&#8217; options from the context-sensitve &#8230; <a href="http://objectfactory.wordpress.com/2010/10/11/macro-errors-working-in-offline-documents-within-requisitepro-2/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=85&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When working in offline documents and RequisitePro you may experience macro errors relating to security when using the context-sensitive (right-click) menu and working with requirements. These may occur when selecting the &#8216;Requirement Properties&#8217; or &#8216;New Requirement&#8217; options from the context-sensitve menu after clicking on a requirements.</p>
<p>This is apparently caused by corruption within the normal.dot template and should be fixed by removing all instances of this from the computer and causing this to be regenerated. The following technote describes this</p>
<p><a href="http://www-1.ibm.com/support/docview.wss?rs=997&amp;context=SSSHCT&amp;context=SSCGQ7B&amp;q1=requirement+properties&amp;q2=offline&amp;uid=swg21128968&amp;loc=en_US&amp;cs=utf-8&amp;lang=en">http://www-1.ibm.com/support/docview.wss?rs=997&amp;context=SSSHCT&amp;context=SSCGQ7B&amp;q1=requirement+properties&amp;q2=offline&amp;uid=swg21128968&amp;loc=en_US&amp;cs=utf-8&amp;lang=en</a></p>
<p>Once this has been done these menu options should no longer appear on the context menu.</p>
<hr />
<em>The above was resurrected from an old local Drupal instance and was written back in 2007.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=85&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2010/10/11/macro-errors-working-in-offline-documents-within-requisitepro-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>Grabbing Screenshots in Mac OS X</title>
		<link>http://objectfactory.wordpress.com/2010/09/30/grabbing-screenshots-in-mac-os-x/</link>
		<comments>http://objectfactory.wordpress.com/2010/09/30/grabbing-screenshots-in-mac-os-x/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 17:29:53 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=68</guid>
		<description><![CDATA[Until today my favoured mechanism for grabbing a screenshot in Mac OS X was to navigate to the Applications-&#62;Utilities folder and fire up the &#8216;Grab&#8217; utility, very nifty it is too. However when reporting a problem with facebook tonight, I &#8230; <a href="http://objectfactory.wordpress.com/2010/09/30/grabbing-screenshots-in-mac-os-x/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=68&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Until today my favoured mechanism for grabbing a screenshot in Mac OS X was to navigate to the Applications-&gt;Utilities folder and fire up the &#8216;Grab&#8217; utility, very nifty it is too. However when reporting a problem with facebook tonight, I noticed a help page they host which has an alternative and quicker mechanism of doing this:</p>
<p><strong>In Mac OS X</strong></p>
<ol>
<li>Simultaneously hold down the ⌘-Shift-4 keys.</li>
<li>Press the spacebar.</li>
<li>Click the open window that you wish to take a screen shot of. The screen shot should appear as a file on the desktop labeled &#8220;Picture 1.&#8221;<br />
Please note that in Mac OS X 10.6, the file is &#8220;Screen shot [date] at [time].&#8221;</li>
</ol>
<p><a href="http://www.facebook.com/help/?page=971">http://www.facebook.com/help/?page=971</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=68&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2010/09/30/grabbing-screenshots-in-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>That Use Case ate my credit card</title>
		<link>http://objectfactory.wordpress.com/2008/09/25/that-use-case-ate-my-credit-card/</link>
		<comments>http://objectfactory.wordpress.com/2008/09/25/that-use-case-ate-my-credit-card/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 22:25:26 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[requirements]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[use case]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=64</guid>
		<description><![CDATA[Another example of someone not reviewing the use case. Arrived back at the train station late in the evening following my trip to the Rational Software Development Conference UK 2008. I decided to pay my parking at an automated machine &#8230; <a href="http://objectfactory.wordpress.com/2008/09/25/that-use-case-ate-my-credit-card/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=64&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Another example of someone not reviewing the use case.</p>
<p>Arrived back at the train station late in the evening following my trip to the Rational Software Development Conference UK 2008. I decided to pay my parking at an automated machine with a new credit card which I had not yet changed the PIN number on. Put the card in the machine and entered what was obviously the incorrect PIN number, tried the same thing a second time (with a slight alteration of the still incorrect PIN number) at which point the machine correctly told me I had one attempt left. Rather than risk getting my card locked out I decided to pay on a card which I thought I did know the PIN number of, duly pressed cancel to get the original card returned, put a different card in and entered yet another incorrect PIN number. You can imagine my surprise when the machine told me the card had been locked (remember this was a different card to which I had only attempted a single incorrect PIN number). Now whilst I have to shoulder some of the blame for putting in the wrong PIN for two different cards. I can&#8217;t help but think that someone either didn&#8217;t properly detail that use case or failed to test sufficiently!</p>
<p>I ended up paying on a third card&#8230;. grrrr</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=64&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2008/09/25/that-use-case-ate-my-credit-card/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>Rational Software Development Conference UK 2008</title>
		<link>http://objectfactory.wordpress.com/2008/09/24/rational-software-development-conference-uk-2008/</link>
		<comments>http://objectfactory.wordpress.com/2008/09/24/rational-software-development-conference-uk-2008/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 22:15:26 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Rational]]></category>
		<category><![CDATA[jazz]]></category>
		<category><![CDATA[rational team concert]]></category>
		<category><![CDATA[rsdc]]></category>
		<category><![CDATA[rtc]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=61</guid>
		<description><![CDATA[I have just returned from attending the Rational Software Development Conference UK 2008 held at the Royal College of Physicians in London. This was once again a very interesting two day event with a packed schedule of interesting keynote speeches, &#8230; <a href="http://objectfactory.wordpress.com/2008/09/24/rational-software-development-conference-uk-2008/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=61&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have just returned from attending the <a href="http://www.ibm.com/software/uk/itsolutions/developer/rsdc/">Rational Software Development Conference UK 2008</a> held at the Royal College of Physicians in London. This was once again a very interesting two day event with a packed schedule of interesting keynote speeches, presentations and labs tackling various aspects from the IBM Rational products themselves to process, methods and practices (the new buzzword) and a whole slew of other related stuff. I tried to spread myself as thinly as possible (no mean feat these days) to try and attend as many tracks and presentations as possible but mainly focused on those related to the <a href="https://jazz.net/pub/index.jsp">Jazz</a> platform and the new products either already released such as <a title="Rational Team Concert (RTC)" href="http://www-01.ibm.com/software/awdtools/rtc/">Rational Team Concert (RTC)</a>, or those in the pipeline. I will write further about RTC later this week as it is the most exciting product to be released for quite some time!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=61&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2008/09/24/rational-software-development-conference-uk-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>Amy MacDonald &#8211; This Is The Life</title>
		<link>http://objectfactory.wordpress.com/2008/09/24/amy-macdonald-this-is-the-life/</link>
		<comments>http://objectfactory.wordpress.com/2008/09/24/amy-macdonald-this-is-the-life/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 22:04:11 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Leisure]]></category>
		<category><![CDATA[amy macdonald]]></category>
		<category><![CDATA[chris evans]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=59</guid>
		<description><![CDATA[Heard this on the Chris Evans show tonight on Radio 2&#8230;. quite good really. You don&#8217;t tend to come across this kind of thing when listening to &#8216;Today&#8216; on Radio 4<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=59&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Heard this on the Chris Evans show tonight on Radio 2&#8230;. quite good really. You don&#8217;t tend to come across this kind of thing when listening to &#8216;<a title="Today" href="http://www.bbc.co.uk/radio4/today/">Today</a>&#8216; on <a title="Radio 4" href="http://www.bbc.co.uk/radio4/">Radio 4</a></p>
<span style="text-align:center; display: block;"><a href="http://objectfactory.wordpress.com/2008/09/24/amy-macdonald-this-is-the-life/"><img src="http://img.youtube.com/vi/c6MRYLWJb1o/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=59&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2008/09/24/amy-macdonald-this-is-the-life/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>iTunes sharing &#8211; the highs and not so highs&#8230;</title>
		<link>http://objectfactory.wordpress.com/2008/09/18/itunes-sharing-the-highs-and-not-so-highs/</link>
		<comments>http://objectfactory.wordpress.com/2008/09/18/itunes-sharing-the-highs-and-not-so-highs/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 20:35:37 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[imac]]></category>
		<category><![CDATA[itunes]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=54</guid>
		<description><![CDATA[Having switched last year from a combination of Debian GNU/Linux as my primary and Windows XP as my secondary operating system on a dual-boot PC to solely using Mac OS X on an 20&#8243; iMac; I can honestly say I &#8230; <a href="http://objectfactory.wordpress.com/2008/09/18/itunes-sharing-the-highs-and-not-so-highs/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=54&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Having switched last year from a combination of Debian GNU/Linux as my primary and Windows XP as my secondary operating system on a dual-boot PC to solely using Mac OS X on an 20&#8243; iMac; I can honestly say I have been absolutely delighted with the overall experience. To my mind Mac OS X has the strength and stability of Unix as the underlying core with the advantages of a superb UI built on top.</p>
<p>As part of this transition, I have also ripped all the CDs in my collection to the hard drive and stored these as &#8216;higher-quality&#8217; AAC (.m4a) files within my iTunes library. This has all been working fine for me and I have been more than happy with the outcome. However when it comes to sharing this media with other members of my family things start to become a little less perfect.</p>
<p>iTunes seems to have the concept of the &#8216;media&#8217; and the library which references it and these are potentially separate. As this was originally done under my personal account with the default locations the iTunes library is stored under the following folder (where ~ represents the user account path)</p>
<p>~/Music/iTunes/</p>
<p>and the actual media by default is stored under</p>
<p>~/Music/iTunes/iTunes Music</p>
<p>all sorted by Artist and Album. By default this is private to the individual user, to make this accessible to other accounts on the same machine without fiddling with ACLs the recommended way is to either copy this to the default public folder under your account or better still to copy one or more aspects to a shared folder, typically /Users/Shared.</p>
<p>Having done a certain amount of investigation and a fair amount of &#8216;googling&#8217; on this topic the two recommendations seem to be variations on the above. Either copy both the media and the library to the shared user folder or alternatively copy the media to the shared user folder and then maintain individual libraries to reference this within each individual default location (~/Music/iTunes/).</p>
<p>To my mind both of these approaches have their own drawbacks. My requirements would be (at a very high level obviously) for each user to share the media but for each to possess their own library, in this way each user could have their own individual playlists etc. but reference a common set of media files. However when a user rips a CD and this media is added to the media folder and also their library file, for the other user(s) to automatically &#8216;detect&#8217; when iTunes next starts that new media is present in the folder and for this to be automatically added to their own library and made accessible.</p>
<p>What seems to happen currently is that if each account owns their own library, whilst this allows them to have their own playlists, if new media is created by another account then this is not detected and this has to be manually added by the other accounts which wish to access this. Not difficult to imagine that in general this would be an unusable situation in the medium term. Alternatively if a common library and media folder is used across accounts then not only is everyones library shared (by definition) and therefore playlists etc. but only one person can access the library at any one time as iTunes insists on gaining a lock on the file.</p>
<p>Hmmmmphh! I wonder who captured the requirements for that one then ?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=54&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2008/09/18/itunes-sharing-the-highs-and-not-so-highs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>Architectural Requirements</title>
		<link>http://objectfactory.wordpress.com/2008/09/17/architectural-requirements/</link>
		<comments>http://objectfactory.wordpress.com/2008/09/17/architectural-requirements/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 12:39:16 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[requirements]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[non-functional]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=49</guid>
		<description><![CDATA[Within my role, and due to my keen interest in requirements management, I am often asked for advice on what constitutes a non-functional requirement and what these typically contain or define. It seems to me that the art of defining &#8230; <a href="http://objectfactory.wordpress.com/2008/09/17/architectural-requirements/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=49&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Within my role, and due to my keen interest in requirements management,  I am often asked for advice on what constitutes a non-functional requirement and what these typically contain or define. It seems to me that the art of defining requirements has, in some cases, been lost and people all too easily blur the lines between the problem space and the solution space leading to unnecessarily constrained solutions to problems.</p>
<p>When eliciting the requirements it is imperative that all the stakeholders are identified and not just those who are immediately apparent; additionally those involved in the process maintain a clear separation between the requirements and design aspects.</p>
<p>The following is a good introductory post by a gentleman called Peter Eeles to what he terms &#8216;Architectural Requirements&#8217; but which to my mind covers functional and non-functional requirements; I believe his classification is due to these being requirements which have a significant bearing on the architecture.</p>
<p><a href="http://www.ibm.com/developerworks/rational/library/4706.html">http://www.ibm.com/developerworks/rational/library/4706.html</a></p>
<p>Whilst these are often ignored early on in the project due to the focus on what are commonly referred to as &#8216;business requirements&#8217;, you do this at your peril as in my experience these can significantly affect the costs of delivering the solution and thus the viability of the overall project.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/objectfactory.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/objectfactory.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=49&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2008/09/17/architectural-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
		<item>
		<title>Avoid duplicate results when using a SQL Self-Join</title>
		<link>http://objectfactory.wordpress.com/2008/09/11/avoid-duplicate-results-when-using-a-sql-self-join/</link>
		<comments>http://objectfactory.wordpress.com/2008/09/11/avoid-duplicate-results-when-using-a-sql-self-join/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 15:53:00 +0000</pubDate>
		<dc:creator>robexley</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[self-join]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://objectfactory.wordpress.com/?p=42</guid>
		<description><![CDATA[I&#8217;ve spent a fair amount of time today scratching my head trying to work out how to avoid what are &#8216;logically&#8217; duplicate results being returned when using a self-join in a database query and thought it best to quickly document &#8230; <a href="http://objectfactory.wordpress.com/2008/09/11/avoid-duplicate-results-when-using-a-sql-self-join/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=42&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent a fair amount of time today scratching my head trying to work out how to avoid what are &#8216;logically&#8217; duplicate results being returned when using a self-join in a database query and thought it best to quickly document what my solution was before I forget it.</p>
<p>This is probably case-specific and may not work in other environments depending on the data being used.  It is also going to seem somewhat contrived as I have deliberately tried to keep this as simple as possible and avoided all the supporting tables and also details as to why this is necessary to support the user scenario.</p>
<p>In this example I have a table of name details associated with people which I have created in MySQL 5.0.67 as follows:</p>
<p><code>DROP TABLE IF EXISTS `schema`.`person`;<br />
CREATE TABLE  `schema`.`person` (<br />
`id` int(10) unsigned NOT NULL auto_increment,<br />
`forename` varchar(30) default NULL,<br />
`surname` varchar(30) default NULL,<br />
PRIMARY KEY  (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=latin1;</code></p>
<p>and this is populated with the following five records</p>
<p><code>1, 'Arthur', 'Dent'<br />
2, 'Albert', 'Einstein'<br />
3, 'Alfred', 'Hitchcock'<br />
4, 'Albus', 'Dumbledore'<br />
5, 'Ethelred', 'The Unready'</code></p>
<p>If I wish to find all records in this table associated with two people using wildcards (one whose forename begins with &#8216;A&#8217; and the other whose forename begins with &#8216;Al&#8217;), I ended up using a self-join and two table aliases, e.g. P1 = Person 1 and P2 = Person 2 as follows:</p>
<p><code>select p1.id, p1.forename, p1.surname, p2.id, p2.forename, p2.surname<br />
from person p1, person p2<br />
where p1.forename like 'A%' and p2.forename like 'Al%';</code></p>
<p>Now, unfortunately when this is executed this results in all the matching permutations being returned as follows:</p>
<p><code>1, 'Arthur', 'Dent', 2, 'Albert', 'Einstein'<br />
2, 'Albert', 'Einstein', 2, 'Albert', 'Einstein'<br />
3, 'Alfred', 'Hitchcock', 2, 'Albert', 'Einstein'<br />
4, 'Albus', 'Dumbledore', 2, 'Albert', 'Einstein'<br />
1, 'Arthur', 'Dent', 3, 'Alfred', 'Hitchcock'<br />
2, 'Albert', 'Einstein', 3, 'Alfred', 'Hitchcock'<br />
3, 'Alfred', 'Hitchcock', 3, 'Alfred', 'Hitchcock'<br />
4, 'Albus', 'Dumbledore', 3, 'Alfred', 'Hitchcock'<br />
1, 'Arthur', 'Dent', 4, 'Albus', 'Dumbledore'<br />
2, 'Albert', 'Einstein', 4, 'Albus', 'Dumbledore'<br />
3, 'Alfred', 'Hitchcock', 4, 'Albus', 'Dumbledore'<br />
4, 'Albus', 'Dumbledore', 4, 'Albus', 'Dumbledore'</code></p>
<p>Not only has this returned duplicates for the individual themselves (e.g. Albert Einstein for both person 1 and person 2) but also the same combinations in a different order (e.g ID 3,2 and 2,3). The first one of these is easy to remove from the result set when an &#8216;id&#8217; field is present by adding the following criteria in the query </p>
<p><code>and p1.id != p2.id;</code></p>
<p>i.e.<br />
<code>select p1.id, p1.forename, p1.surname, p2.id, p2.forename, p2.surname<br />
from person p1, person p2<br />
where p1.forename like 'A%' and p2.forename like 'Al%'<br />
and p1.id != p2.id;</code></p>
<p>this results in the following result set:</p>
<p><code>1, 'Arthur', 'Dent', 2, 'Albert', 'Einstein'<br />
3, 'Alfred', 'Hitchcock', 2, 'Albert', 'Einstein'<br />
4, 'Albus', 'Dumbledore', 2, 'Albert', 'Einstein'<br />
1, 'Arthur', 'Dent', 3, 'Alfred', 'Hitchcock'<br />
2, 'Albert', 'Einstein', 3, 'Alfred', 'Hitchcock'<br />
4, 'Albus', 'Dumbledore', 3, 'Alfred', 'Hitchcock'<br />
1, 'Arthur', 'Dent', 4, 'Albus', 'Dumbledore'<br />
2, 'Albert', 'Einstein', 4, 'Albus', 'Dumbledore'<br />
3, 'Alfred', 'Hitchcock', 4, 'Albus', 'Dumbledore'</code></p>
<p>As can be seen however, this still has the same logical combinations duplicated (order not withstanding). The removal of these records is significantly harder to do. I initially wrongly thought that I would be able to remove this through the addition of a &#8216;distinct&#8217; keyword to the query but this only operates across all columns in the record and therefore doesn&#8217;t deliver the required result.</p>
<p>I resolved this by the inclusion of a combination of the &#8216;if&#8217; and &#8216;concat&#8217; functions that I was not aware of in SQL and a &#8216;group by&#8217; clause (the &#8216;if&#8217; function may not in fact be part of the ANSI standard yet). The following was the result:</p>
<p><code>select p1.id, p1.forename, p1.surname, p2.id, p2.forename, p2.surname,<br />
       if (p1.id&lt;p2.id,CONCAT(p1.id,p2.id),CONCAT(p2.id,p1.id)) as pid_concat<br />
from person p1, person p2<br />
where p1.forename like 'A%' and p2.forename like 'Al%'<br />
and p1.id != p2.id<br />
group by pid_concat;</code><br />
<code><br />
1, 'Arthur', 'Dent', 2, 'Albert', 'Einstein', '12'<br />
1, 'Arthur', 'Dent', 3, 'Alfred', 'Hitchcock', '13'<br />
1, 'Arthur', 'Dent', 4, 'Albus', 'Dumbledore', '14'<br />
3, 'Alfred', 'Hitchcock', 2, 'Albert', 'Einstein', '23'<br />
4, 'Albus', 'Dumbledore', 2, 'Albert', 'Einstein', '24'<br />
4, 'Albus', 'Dumbledore', 3, 'Alfred', 'Hitchcock', '34'</code></p>
<p>Now whilst the &#8216;if&#8217; function may or may not be widely implemented, it seems from the quick look I had that there is typically an equivalent function in most of the widely used databases in use. I found an Oracle function called &#8216;decode&#8217; which would seem to deliver the same functionality. Result!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/objectfactory.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/objectfactory.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/objectfactory.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/objectfactory.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/objectfactory.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/objectfactory.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/objectfactory.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/objectfactory.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/objectfactory.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/objectfactory.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=objectfactory.wordpress.com&amp;blog=1931021&amp;post=42&amp;subd=objectfactory&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://objectfactory.wordpress.com/2008/09/11/avoid-duplicate-results-when-using-a-sql-self-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cf9ab585931b9f38f0c41ec507d0bce?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robexley</media:title>
		</media:content>
	</item>
	</channel>
</rss>
