<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>David's Blog</title>
	<link>http://blogs.clarience.com/davide</link>
	<description>Software architecture, development and other tidbits.</description>
	<pubDate>Fri, 16 Apr 2010 14:00:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>SQL Server: Implementing constraints with indexed-views</title>
		<link>http://blogs.clarience.com/davide/?p=28</link>
		<comments>http://blogs.clarience.com/davide/?p=28#comments</comments>
		<pubDate>Fri, 16 Apr 2010 14:00:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=28</guid>
		<description><![CDATA[Indexed-views are useful for more than just performance improvement, they can also be used to implement constraints. In particular, constraints involving multiple tables.
The principle is relatively simple. Design an indexed-view such that duplicate keys are selected for every constraint violation. Sometimes a “numbers” table can be useful to double-up the rows (although we won’t be [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=28</wfw:commentRss>
		</item>
		<item>
		<title>Deadlocks are a property of SQL Server&#8217;s pessimistic concurrency scheme</title>
		<link>http://blogs.clarience.com/davide/?p=27</link>
		<comments>http://blogs.clarience.com/davide/?p=27#comments</comments>
		<pubDate>Thu, 18 Feb 2010 18:00:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=27</guid>
		<description><![CDATA[I’ve encountered more than a few SQL Server based applications where deadlocks are treated as an error in almost exactly the same manner as say, a .NET null-reference exception. In most cases this means the user sees a message along the lines of: “An error has occurred, please try again”.
A deadlock is usually a recoverable [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=27</wfw:commentRss>
		</item>
		<item>
		<title>Using JSONP for cross-host &#34;Ajax&#34; calls with jQuery</title>
		<link>http://blogs.clarience.com/davide/?p=25</link>
		<comments>http://blogs.clarience.com/davide/?p=25#comments</comments>
		<pubDate>Fri, 12 Feb 2010 07:00:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=25</guid>
		<description><![CDATA[When trying to make cross-host Ajax calls, you’ll likely run foul of the browser’s “same origin policy”. Usually, the user will be presented with a pop-up similar to this:
 
One solution is JSONP. It happens that the same origin policy is relaxed for certain tags and that includes the &#60;script&#62; tag. JSONP takes advantage of [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=25</wfw:commentRss>
		</item>
		<item>
		<title>Copying the contents of a hard disk drive and an opportunity to revisit Linux</title>
		<link>http://blogs.clarience.com/davide/?p=23</link>
		<comments>http://blogs.clarience.com/davide/?p=23#comments</comments>
		<pubDate>Thu, 11 Feb 2010 07:00:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=23</guid>
		<description><![CDATA[My current 80GB HDD was running low on disk space and so it was time for an upgrade. My plan was to copy the data from the old HDD to a new 500GB one and extend the one and only system partition. A straightforward task.
Now, the PC in question has only one SATA port on the [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=23</wfw:commentRss>
		</item>
		<item>
		<title>Tree traversal, LINQ style</title>
		<link>http://blogs.clarience.com/davide/?p=22</link>
		<comments>http://blogs.clarience.com/davide/?p=22#comments</comments>
		<pubDate>Mon, 08 Feb 2010 23:30:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=22</guid>
		<description><![CDATA[When dealing with tree structures, it’s helpful to be able to visit all nodes. Here’s an extension method that makes traversing tree structures easier (in this case, in preorder, depth-first). 
internal static class TreeTraverse        {         &#160;&#160;&#160; public static IEnumerable&#60;T&#62; PreorderTraverse&#60;T&#62;(this [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=22</wfw:commentRss>
		</item>
		<item>
		<title>Unknown PCI device (Device Manager) &#8211; How can I find out what drivers I need?</title>
		<link>http://blogs.clarience.com/davide/?p=21</link>
		<comments>http://blogs.clarience.com/davide/?p=21#comments</comments>
		<pubDate>Fri, 05 Feb 2010 14:30:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Windows]]></category>

		<category><![CDATA[Operating System]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=21</guid>
		<description><![CDATA[If a PCI device is showing up as an “Unknown Device” in the Windows Device Manager (devmgmt.msc) and you’re not sure what the manufacturer and/or device name is, here’s a quick tip that may help.
Pull up the Properties for the device. Select “Hardware Ids” in the drop-down and make a note of the Vendor (VEN_XXXX) [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=21</wfw:commentRss>
		</item>
		<item>
		<title>C# Anonymous functions for conditional operations</title>
		<link>http://blogs.clarience.com/davide/?p=18</link>
		<comments>http://blogs.clarience.com/davide/?p=18#comments</comments>
		<pubDate>Wed, 03 Feb 2010 12:00:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=18</guid>
		<description><![CDATA[More specifically, lambda expressions… Let’s say you have a method, the body of which will execute based on the value of a flag (myFlag in the example here):
public void MyConditionalMethod(string format, params object[] args)        {         &#160;&#160;&#160; if (myFlag)   [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=18</wfw:commentRss>
		</item>
		<item>
		<title>NHibernate: Implementing Equals and GetHashCode</title>
		<link>http://blogs.clarience.com/davide/?p=17</link>
		<comments>http://blogs.clarience.com/davide/?p=17#comments</comments>
		<pubDate>Thu, 28 Jan 2010 01:30:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[NHibernate]]></category>

		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=17</guid>
		<description><![CDATA[Conflicting advice abounds regarding the correct way to implement Equals and GetHashCode for NHibernate entities.
In general, any Equals implementation is required to be:

Transitive 
Reflexive 
Symmetric 

A GetHashCode implementation must have the property that it returns the same value for any two objects for which Equals returns true (it may or may not return the same [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=17</wfw:commentRss>
		</item>
		<item>
		<title>Universally Unique Identifiers (UUIDs) as Surrogate Keys</title>
		<link>http://blogs.clarience.com/davide/?p=16</link>
		<comments>http://blogs.clarience.com/davide/?p=16#comments</comments>
		<pubDate>Tue, 19 Jan 2010 16:30:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Software Architecture]]></category>

		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=16</guid>
		<description><![CDATA[Universally Unique Identifiers (UUIDs) make good surrogate keys for a number of reasons:

They are, by definition, globally unique, leading to practical benefits such as:

Given a UUID, it’s possible to identify the relation/tuple (and even potentially the database/environment) for which it is a key. This property can prove useful in the field when troubleshooting. 
UUIDs will [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=16</wfw:commentRss>
		</item>
		<item>
		<title>27&#8221; Apple iMac, Windows 7 installation and a blank screen</title>
		<link>http://blogs.clarience.com/davide/?p=15</link>
		<comments>http://blogs.clarience.com/davide/?p=15#comments</comments>
		<pubDate>Fri, 01 Jan 2010 22:30:00 +0000</pubDate>
		<dc:creator>David</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://blogs.clarience.com/davide/?p=15</guid>
		<description><![CDATA[I recently picked up one of the new 27” iMacs with ATI Radeon 4850 graphics and so far I’m impressed. It’s a smart piece of hardware.
Out of necessity I need be able to boot into Windows 7 so I decided to install it (64-bit build) via Boot Camp. The first phase of setup proceeded without [...]]]></description>
		<wfw:commentRss>http://blogs.clarience.com/davide/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
	</channel>
</rss>
