<?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>This Hours Eternity</title>
	<atom:link href="http://adammills.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://adammills.wordpress.com</link>
	<description>Random Ramblings on .NET, C#, WPF and MVVM</description>
	<lastBuildDate>Fri, 25 Nov 2011 10:29:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='adammills.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>This Hours Eternity</title>
		<link>http://adammills.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://adammills.wordpress.com/osd.xml" title="This Hours Eternity" />
	<atom:link rel='hub' href='http://adammills.wordpress.com/?pushpress=hub'/>
		<item>
		<title>NuGet Developer WorkFlow</title>
		<link>http://adammills.wordpress.com/2011/08/15/nuget-developer-workflow/</link>
		<comments>http://adammills.wordpress.com/2011/08/15/nuget-developer-workflow/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 14:15:53 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">http://adammills.wordpress.com/?p=271</guid>
		<description><![CDATA[During the proof of concept of migrating our internal dependency resolution from SVN Externals to NuGet I forgot an important stakeholder; Developers.  When the build updates the packages; how does a developer ensure their environment is up to date? Edit: There is now a NuGet PowerTools Package that will add a PackageConsole command to restore [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=271&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During the proof of concept of migrating our internal dependency resolution from SVN Externals to NuGet I forgot an important stakeholder; Developers.  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>When the build updates the packages; how does a developer ensure their environment is up to date?</p>
<p><strong>Edit:</strong> <em>There is now a <a href="http://blog.davidebbo.com/2011/08/easy-way-to-set-up-nuget-to-restore.html">NuGet PowerTools Package</a> that will add a PackageConsole command to restore all packages.</em><br />
<em>I still like the TortoiseHook and still wish I could specify the packages location, but we&#8217;re getting closer to &#8216;there&#8217;.</em></p>
<h3><strong>Check In Packages</strong></h3>
<p>The obvious answer is to check in the packages. After all that’s how the SVN Externals solution worked and it ensures the repeatability tenant of continuous builds. Sometimes however it’s not an option for a number of reasons; company policy, ruthless team leads or dictating architects, take your pick.</p>
<h3><strong>Check In Packages to a “temp” repository.</strong></h3>
<p>The way our SVN externals solution worked was to keep a separate repository entirely for “packages”. This repository could be blown away when it got bloated and replaced by a new version. Because it was used for multiple solutions/Company projects, it also enabled remote workers to keep their own copy of the repository locally (using DNS or host file entries).</p>
<p>This method can still be used with NuGet and means that an SVN update updates everything.</p>
<h3><strong>Pre-Build Step</strong></h3>
<p>A pre-build step can be added for each project to run NuGet Install. I don’t really like this as it is an unnecessary build step. This task is an “Update” task not a build task and the speed of my build is sacrosanct to me.</p>
<h3><strong>Manually with Batch File</strong></h3>
<p>After updating the local copy, the Developer can run a batch file manually to update packages.</p>
<p><pre class="brush: plain;">
for /r %cd% %%X in (*.csproj) do (nuget install %%~pX\packages.config -OutputDirectory packages)
</pre></p>
<p>This batch file command runs nuget install for every packages.config in a solution.</p>
<h3><strong>Automate the Batch File with Tortoise Hooks</strong></h3>
<p>Obviously an automated solution is preferred to adding a secondary step to the developer’s workflow. If your VCS client supports hooks such as <a href="http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-settings.html">TortoiseSVN client hooks </a><strong></strong> you can check-in the above batch file and get developers to hook it in to their VCS Update.</p>
<h3><strong>Configure NuGet to use shared packages repository</strong></h3>
<p>The true Holy Grail for people who don’t want to check-in packages is the ability to tell NuGet where packages live. It could then be configured to use a shared network drive to find the packages. This would be the same repository used by the build so by default it is always up to date. Unfortunately this is not yet a feature of NuGet. It is being discussed as a new feature, so if its something you are keen on go vote for it at <a href="http://nuget.codeplex.com/workitem/215">http://nuget.codeplex.com/workitem/215</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/271/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=271&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/08/15/nuget-developer-workflow/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>Diamonds Aren&#8217;t Forever &#8211; The Build</title>
		<link>http://adammills.wordpress.com/2011/08/15/diamonds-arent-forever-the-build/</link>
		<comments>http://adammills.wordpress.com/2011/08/15/diamonds-arent-forever-the-build/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 10:48:19 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DiamondDependency]]></category>
		<category><![CDATA[MSBUILD]]></category>
		<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/?p=264</guid>
		<description><![CDATA[This example will use TeamCity as the build platform as well as the Alpha Nuget Trigger and Update/Install Packages Build step found here. It will also use my preferred Package Update Strategy defined here. The build targets are specified in the build directory of the solution (here) The build targets are linked into the solutions [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=264&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This example will use TeamCity as the build platform as well as the Alpha Nuget Trigger and Update/Install Packages Build step <a href="http://confluence.jetbrains.net/display/TW/NuGet+support" target="_blank">found here.</a><br />
It will also use my preferred Package Update Strategy <a title="Diamonds Aren’t Forever – Choosing a package update strategy" href="http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-choosing-a-package-update-strategy/">defined here.</a><br />
The build targets are specified in the build directory of the solution <a href="https://bitbucket.org/AdamMills/diamondsarentforever/src/Version1/Build/">(here)</a><br />
The build targets are linked into the solutions via the <a href="http://adammills.wordpress.com/2011/07/14/customising-visual-studios-build/">Named MsBuild Hook</a>.</p>
<h2>The Build</h2>
<p>The automated build for each component has 4 main build steps</p>
<ol>
<li><strong>Update and Install packages</strong><br />
This is done by adding the Alpha NuGet Build Step and selecting the options relevant to your update strategy. I make liberal use of Build Parameters here.</li>
<li><strong>Increment Version Number</strong><br />
This is done via the TeamCity.targets.<br />
It takes the TeamCity build number, makes it the revision number in the AssemblyInfo. The pack command later uses this as the package version.</li>
<li><strong>Build</strong></li>
<li><strong>Check In<br />
</strong>This is not implemented in the example and will depend on your VCS. However updating packages will change the packages.config and the project files of your solution. These will need to be checked in. If you also check in packages, these will need to be added as well.</li>
<li><strong>Create, Lock Versions, Publish Package<br />
</strong>Creating and Publishing a package are trivial with NuGet. Package.Targets contains targets that Exec NuGet to do create a package. I use a Shared Drive for my repository so publishing is just a matter of specifying the output directory of pack to the repository UNC path. However there is also a publish command in NuGet if you want to push to the official feed.The interesting part of this step is my need to ensure all dependencies read from my project file will be locked to the version used to build the current version. This involves changing all dependency elements in the nuspec file inside the package. The target unzips the package, runs the LockDepedencyVersions Target found here and then re-zips the package.</li>
</ol>
<h2>Triggering</h2>
<p>The last piece of the TeamCity puzzle is triggers; we want a build to be triggered if there is a new dependent package. At the moment it is a little clumsy as you must create a trigger per package you wish to monitor. I only monitor internal dependencies and then only direct internal dependencies.</p>
<p>So for example the UI project whilst it uses Common, Common is a dependency of Service A and Service B. So I only need to add triggers for those two packages. Because when Common changes, Service A and B will be triggered and when they publish their new versions the UI build will be triggered.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=264&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/08/15/diamonds-arent-forever-the-build/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>Diamonds Aren&#8217;t Forever &#8211; Choosing a package update strategy</title>
		<link>http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-choosing-a-package-update-strategy/</link>
		<comments>http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-choosing-a-package-update-strategy/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 12:05:35 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DiamondDependency]]></category>
		<category><![CDATA[MSBUILD]]></category>
		<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/?p=251</guid>
		<description><![CDATA[There are two distinct yet related parts in the automatic creation of a package that need to be considered. Updating of its dependencies for building Should we always update to the latest versions of our dependencies before building? Or only up to the latest minor version? Or Major version? Should we specify ranges for each [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=251&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are two distinct yet related parts in the automatic creation of a package that need to be considered.</p>
<ol>
<li><strong>Updating of its dependencies for building</strong><br />
<blockquote><p>Should we always update to the latest versions of our dependencies before building?<br />
Or only up to the latest minor version? Or Major version?<br />
Should we specify ranges for each individual package that we should update to?</p></blockquote>
<p>Nuget provides two options here, one is too specify (by hand ATM) the allowedVersions attribute in the packages.config (following the <a href="http://docs.nuget.org/docs/reference/version-range-specification" target="_blank">Version Specification</a>). The update command then only updates to versions that are within the specified range.</p>
<p>At the moment, the Nuget pack command doesn’t copy these across into the package. So this needs to be automated manually.<br />
<a href="http://nuget.codeplex.com/workitem/1283" target="_blank">(This should be fixed in the next version)</a></p>
<p>The other option is to use the –safe option of Update. From the docs<em> “Looks for updates with the highest version available within the same major and minor version as the installed package.”.</em></p>
<p>In other words, if you have Elmah 1.0.0.0 installed, and 1.0.1.0, 1.0.2.0, and 1.1.0.0 are in the feed:</p>
<table width="367" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="193"><strong>Command</strong></td>
<td valign="top" width="172"><strong>Description</strong></td>
</tr>
<tr>
<td valign="top" width="193">Update-Package Elmah</td>
<td valign="top" width="172">Updates Elmah to 1.1.0.0</td>
</tr>
<tr>
<td valign="top" width="193">Update-Package Elmah -Safe</td>
<td valign="top" width="172">Updates Elmah to 1.0.2.0</td>
</tr>
</tbody>
</table>
<p>&nbsp;</li>
<li><strong>Specifying allowable dependency versions during packaging?</strong><br />
<blockquote><p>Should we restrict consumers to only using the exact version of our dependencies that we built with?<br />
Or should we allow any new version to be included?</p></blockquote>
<p>At the moment NuGet Pack adds dependencies from your project file with no version restrictions. So any consumers of your package can upgrade to newer versions of your dependencies. Any restriction you require will need to be done via custom build step to customise the dependencies or manually maintain a nuspec template that pack will use.</p>
<p>I have created an MsBuild target called <a href="http://nuget.org/List/Packages/Chambills.NuGet.BuildTasks" target="_blank">LockVersionDependencies</a> . Which will lock dependency versions to the exact version used to build the package.</li>
</ol>
<p>These are interrelated issues;  regardless whether your package is happy to upgrade to the latest of every dependency, those dependencies may restrict the allowable versions of other dependencies to an exact version or a restricted range.</p>
<p><strong>My Preference</strong></p>
<p>I prefer to allow all dependencies to update to the latest version during the build. If it’s successful I lock the dependencies to the exact version I built with when I create the package; so downstream builds will only use a combination of versions I know have built and passed the tests.</p>
<p>If a dependency updates and breaks the build, I would then fix the issue, or specify a version restriction for it so it doesn’t upgrade in future builds.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/251/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=251&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-choosing-a-package-update-strategy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>Diamonds Aren&#8217;t Forever &#8211; Example Projects</title>
		<link>http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-example-projects/</link>
		<comments>http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-example-projects/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 09:30:14 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DiamondDependency]]></category>
		<category><![CDATA[MSBUILD]]></category>
		<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/?p=250</guid>
		<description><![CDATA[As per this diagram I have created a set of basic .Net projects that represent the problem and put it in a bitbucket repository. The starting point is Tag, Version 1. The Sample The sample consists of 4 separate visual studio solutions, one for each component; the build directory that contains the MsBuild targets; the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=250&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Depedency Graph" src="https://bitbucket.org/AdamMills/diamondsarentforever/raw/4a7cbd8d6d88/Content/DependencyGraph.PNG" alt="" width="613" height="170" /></p>
<p>As per this diagram I have created a set of basic .Net projects that represent the problem and put it in a bitbucket repository.</p>
<p>The starting point is Tag, <a href="https://bitbucket.org/AdamMills/diamondsarentforever/src/Version1" target="_blank"><span style="text-decoration:underline;">Version 1.</span></a></p>
<h2>The Sample</h2>
<p>The sample consists of 4 separate visual studio solutions, one for each component; the build directory that contains the MsBuild targets; the local Nuget Repository and some Content files.</p>
<h3><strong>Installation</strong></h3>
<ol>
<li>Clone Tag &#8211; <a href="https://bitbucket.org/AdamMills/diamondsarentforever/src/Version1">https://bitbucket.org/AdamMills/diamondsarentforever/src/Version1</a></li>
<li>Add the Local Repository to Nuget Settings or Update Repository Path in Build/All.Targets</li>
<li>Run PrepareEnvrionment.bat</li>
</ol>
<h2>The Local Repository</h2>
<p>So the build doesn’t regularly download megabytes of packages (I don’t like storing them in VCS) I use a local repository. There are scripts on the interweb to mirror the full NuGet repository, but that seems too much for this little project. There is a nugget extension that can be used to copy individual packages, <a title="Nuget Copy Extension" href="http://nuget.org/List/Packages/nuget.copy.extension">see here</a> (note if using XP, you’ll need to manually add the LocalAppData Environment Variable)</p>
<p>With this I just maintain and checkin a batch file that downloads each package I need, so I can move or restore the local repository as needed.</p>
<p>I imagine that in the future Nuget will allow you to specify a cache, and then all team members can point to a common cache. Until then….</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/250/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=250&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-example-projects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>

		<media:content url="https://bitbucket.org/AdamMills/diamondsarentforever/raw/4a7cbd8d6d88/Content/DependencyGraph.PNG" medium="image">
			<media:title type="html">Depedency Graph</media:title>
		</media:content>
	</item>
		<item>
		<title>Diamonds Aren&#8217;t Forever</title>
		<link>http://adammills.wordpress.com/2011/08/11/diamonds-arent-forever/</link>
		<comments>http://adammills.wordpress.com/2011/08/11/diamonds-arent-forever/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 10:05:06 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[DiamondDependency]]></category>
		<category><![CDATA[MSBUILD]]></category>
		<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/?p=249</guid>
		<description><![CDATA[As above, a Diamond Dependency is when the dependency graph of a package forms a diamond shape.  It makes upgrading components towards the bottom of the graph more difficult as dependencies have to picked so all package and dependency versions match or are compatible. For a more concrete example, taking the diagram above, say there [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=249&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://bitbucket.org/AdamMills/diamondsarentforever/raw/1cfc2ac49794/Content/DiamondDependency.PNG" alt="" /></p>
<p>As above, a Diamond Dependency is when the dependency graph of a package forms a diamond shape.  It makes upgrading components towards the bottom of the graph more difficult as dependencies have to picked so all package and dependency versions match or are compatible.</p>
<p>For a more concrete example, taking the diagram above, say there is a new nifty feature in Common we want to use in the UI. ServiceA 2.0 is built with Common 2.0, however there is no ServiceB 2.0, so to upgrade to Common 2.0 in the UI we must either upgrade ServiceB, abandon all hope, or determine if Common 2.0 can be brought in side by side with Common 1.0. The latter solution can cause a lot of issues if types in Common are shared between communication with UI and ServiceB.</p>
<p>The general solution is then to “level” the dependencies i.e. upgrade everything to lowest common denominator. In the above solution; the lowest common denominator is Common 1.0, so we must use Service A and Service B 1.0, as well as using Common 1.0 in UI. When Service B 2.0 is released we can upgrade everything to 2.0</p>
<p>For a better explanation of the issue, see here. <a href="http://www.well-typed.com/blog/9">http://www.well-typed.com/blog/9</a></p>
<p>Previously, for me, the solution to packaging and levelling in .Net was to use another platforms packaging tools such as Maven or use SVN Externals to bring in dll’s and manually update the externals property, working out the levelling myself. With the introduction of <a href="http://docs.nuget.org/" target="_blank">Nuget</a> the .Net world now has a package manager which can do the levelling for you, and with a little bit of work lets you automate and integrate the build process of numerous packages; regardless of diamond dependencies.</p>
<p>This is a series of posts; broken into the following:</p>
<ul>
<li><a title="Diamonds Aren’t Forever – Example Projects" href="http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-example-projects/"><strong>The Example Projects</strong></a></li>
<li><a title="Diamonds Aren’t Forever – Choosing a package update strategy" href="http://adammills.wordpress.com/2011/08/12/diamonds-arent-forever-choosing-a-package-update-strategy/"><strong>Picking an Update Packages Strategy</strong></a></li>
<li><a title="Diamonds Aren’t Forever – The Build" href="http://adammills.wordpress.com/2011/08/15/diamonds-arent-forever-the-build/"><strong>The Build</strong> <strong>Process</strong></a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/249/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=249&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/08/11/diamonds-arent-forever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>

		<media:content url="http://bitbucket.org/AdamMills/diamondsarentforever/raw/1cfc2ac49794/Content/DiamondDependency.PNG" medium="image" />
	</item>
		<item>
		<title>GPU.Net &#8211; Target the GPU with .Net Languages</title>
		<link>http://adammills.wordpress.com/2011/08/03/gpu-net-target-the-gpu-with-net-languages/</link>
		<comments>http://adammills.wordpress.com/2011/08/03/gpu-net-target-the-gpu-with-net-languages/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 09:34:03 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Things To Remember]]></category>
		<category><![CDATA[GPU .Net]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/2011/08/03/gpu-net-target-the-gpu-with-net-languages/</guid>
		<description><![CDATA[GPU.Net (a commercial product) allows you to write .Net code and target GPU Harware with the addition of a [Kernel] attribute. This attribute also allows you to specify a fallback method if a GPU is not available. Multi-threading code seems to differ but something to keep in mind. Black-Scholes sample here.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=248&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tidepowerd.com/product" target="_blank">GPU.Net</a> (a commercial product) allows you to write .Net code and target GPU Harware with the addition of a [Kernel] attribute. This attribute also allows you to specify a fallback method if a GPU is not available. Multi-threading code seems to differ but something to keep in mind.</p>
<p><a href="https://github.com/tidepowerd/GPU.NET-Example-Projects/blob/master/CSharp.BlackScholes/BlackScholes.cs" target="_blank">Black-Scholes sample here.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/248/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/248/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/248/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=248&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/08/03/gpu-net-target-the-gpu-with-net-languages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>Customising Visual Studios Build</title>
		<link>http://adammills.wordpress.com/2011/07/14/customising-visual-studios-build/</link>
		<comments>http://adammills.wordpress.com/2011/07/14/customising-visual-studios-build/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 16:18:13 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Things To Remember]]></category>
		<category><![CDATA[MSBUILD]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/2011/07/14/customising-visual-studios-build/</guid>
		<description><![CDATA[Previously, the way I would hook into a projects/solutions build was to edit the .csproj file to import a build file. It always annoyed me and isn’t immediately clear to people (or me after I come back to a project) how the targets are being injected. I recently discovered that you can follow certain naming [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=246&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Previously, the way I would hook into a projects/solutions build was to edit the .csproj file to import a build file. It always annoyed me and isn’t immediately clear to people (or me after I come back to a project) how the targets are being injected.</p>
<p>I recently discovered that you can follow certain naming conventions to automagically get your targets imported into the build. Now, I know some people think automagic is even less transparent than explicitly defining something, however the naming is quite straightforward and obvious.</p>
<p>Add a targets file named; [after|before].&lt;SolutionName&gt;.sln.targets to the same directory as your solution file.</p>
<p>The after file is added after the project files and the before file is added before the project files.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=246&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/07/14/customising-visual-studios-build/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>T4</title>
		<link>http://adammills.wordpress.com/2011/07/13/t4/</link>
		<comments>http://adammills.wordpress.com/2011/07/13/t4/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 09:15:16 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Things To Remember]]></category>
		<category><![CDATA[VisualStudio CodeGeneration]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/2011/07/13/t4/</guid>
		<description><![CDATA[#ThingsINeverKnew Visual Studio has am inbuilt code-generator/templating engine! http://t4talk.codeplex.com/ Can use it to generate compile-time and run-time code, or generate anything template based like config.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=245&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>#ThingsINeverKnew</p>
<p>Visual Studio has am inbuilt code-generator/templating engine!   <br /><a title="http://t4talk.codeplex.com/" href="http://t4talk.codeplex.com/">http://t4talk.codeplex.com/</a></p>
<p>Can use it to generate compile-time and run-time code, or generate anything template based like config.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=245&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/07/13/t4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>Disruptor</title>
		<link>http://adammills.wordpress.com/2011/07/13/disruptor/</link>
		<comments>http://adammills.wordpress.com/2011/07/13/disruptor/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 16:45:32 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Things To Remember]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Disruptor]]></category>
		<category><![CDATA[LMAX]]></category>

		<guid isPermaLink="false">https://adammills.wordpress.com/2011/07/13/disruptor/</guid>
		<description><![CDATA[A great description and analysis of the new LMAX Disruptor project by Martin Fowler, http://martinfowler.com/articles/lmax.html. Seems like a good fit for high performance CQRS. There is also a .Net port being done here.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=244&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A great description and analysis of the new <a href="http://www.lmaxtrader.co.uk/fx-trading" target="_blank">LMAX</a> <a href="http://code.google.com/p/disruptor/" target="_blank">Disruptor project</a> by Martin Fowler, <a title="http://martinfowler.com/articles/lmax.html" href="http://martinfowler.com/articles/lmax.html">http://martinfowler.com/articles/lmax.html</a>.</p>
<p>Seems like a good fit for high performance CQRS.</p>
<p>There is also a .Net port being done <a href="http://code.google.com/p/disruptor-net/" target="_blank">here.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=244&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/07/13/disruptor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
		<item>
		<title>INotifyOnChange Performance Issues</title>
		<link>http://adammills.wordpress.com/2011/05/10/inotifyonchange-performance-issues/</link>
		<comments>http://adammills.wordpress.com/2011/05/10/inotifyonchange-performance-issues/#comments</comments>
		<pubDate>Tue, 10 May 2011 09:41:58 +0000</pubDate>
		<dc:creator>adammills</dc:creator>
				<category><![CDATA[MVVM]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://adammills.wordpress.com/?p=240</guid>
		<description><![CDATA[Intresting article here; that profiles the performance of doing change notification varying ways. Notably the typical Lambda method of change notification is 3-20 times slower than string based notifications. Lambdas have some value outside performance that must be weighed, but if your app is sluggish and uses a lot of bindings; something to consider.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=240&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Intresting article <a href="http://blog.quantumbitdesigns.com/2010/01/26/mvvm-lambda-vs-inotifypropertychanged-vs-dependencyobject/" target="_blank">here</a>; that profiles the performance of doing change notification varying ways. Notably the typical Lambda method of change notification is 3-20 times slower than string based notifications.</p>
<p>Lambdas have some value outside performance that must be weighed, but if your app is sluggish and uses a lot of bindings; something to consider.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/adammills.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/adammills.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/adammills.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/adammills.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/adammills.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/adammills.wordpress.com/240/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/adammills.wordpress.com/240/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/adammills.wordpress.com/240/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=adammills.wordpress.com&amp;blog=31662&amp;post=240&amp;subd=adammills&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://adammills.wordpress.com/2011/05/10/inotifyonchange-performance-issues/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3ec459157a208c159ff65ca77d6b88f3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">adammills</media:title>
		</media:content>
	</item>
	</channel>
</rss>
