<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Peters pattern</title>
	
	<link>http://peterspattern.com</link>
	<description>...thoughts on software development</description>
	<lastBuildDate>Tue, 20 Apr 2010 07:58:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PetersPattern" /><feedburner:info uri="peterspattern" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>59.584739</geo:lat><geo:long>11.166854</geo:long><item>
		<title>Dependency Injection and Class Inheritance</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/qUT7tlze_5M/</link>
		<comments>http://peterspattern.com/dependency-injection-and-class-inheritance/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 07:58:00 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[aggregate service]]></category>
		<category><![CDATA[autofac]]></category>
		<category><![CDATA[dependency injection]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=128</guid>
		<description><![CDATA[Once upon a project there was a base class: class abstract CommonLogic { protected CommonLogic(IFirstLowLevelService firstService) {} } &#8230;that several developers wanted to subclass. They all believed in the inversion of control principle and took therefore all their dependencies as constructor parameters.&#160; With Autofac, a dependency injection framework at hand they ventured forth implementing many ]]></description>
			<content:encoded><![CDATA[<p>Once upon a project there was a base class:</p>
<pre language="C#">class abstract CommonLogic
{
    protected CommonLogic(IFirstLowLevelService firstService) {}
}</pre>
<p>&#8230;that several developers wanted to subclass. They all believed in <a href="http://en.wikipedia.org/wiki/Inversion_of_control" target="_blank">the inversion of control principle</a> and took therefore all their dependencies as constructor parameters.&#160; With <a href="http://code.google.com/p/autofac" target="_blank">Autofac, a dependency injection framework</a> at hand they ventured forth implementing many great subclasses. Some of these appeared like this:</p>
<pre language="C#">class SpecificLogic : CommonLogic
{
    public SpecificLogic(
        IHighLevelService highLevelService,
        IFirstLowLevelService firstService)
    : base(firstService) {}
}</pre>
<p>All was well and the number of variations of special logic classes grew and prospered.</p>
<p>Until one day a Senior Developer wanted to <em>extend</em> the base class with <em>new logic</em> requiring <em>more dependencies</em>. Now all the subclasses had to include the new dependencies in their constructors too, passing them on to the base class.</p>
<pre language="C#">class abstract CommonLogic
{
    protected CommonLogic(
        IFirstLowLevelService firstService,
        ISecondLowLevelService secondService,
        IThirdLowLevelService thirdService
        ) {}
}

class SpecificLogic : CommonLogic
{
    public SpecificLogic(
        IHighLevelService highLevelService,
        IFirstLowLevelService firstService
        ISecondLowLevelService secondService,
        IThirdLowLevelService thirdService)
    : base(firstService, secondService, thirdService) {}
}</pre>
<p>The changes caused great disturbance throughout the Source Repository, affecting both production code and test code alike, delaying schedules and disheartening the developers.</p>
<p>Then a brave developer set out on a quest to free the Source from darkness. And he found <em><a href="http://blog.ploeh.dk/2010/02/02/RefactoringToAggregateServices.aspx" target="_blank">the Aggregate Service</a></em>, a pattern that promised to isolate the subclasses from future changes in the base class constructor:</p>
<pre language="C#">class abstract CommonLogic
{
    public interface IAggregateService
    {
        IFirstLowLevelService FirstService {get;}
        ISecondLowLevelService SecondService {get;}
        IThirdLowLevelService ThirdService {get;}
    }

    protected CommonLogic(IAggregateService aggregateService) {}
}

class SpecificLogic : CommonLogic
{
    public SpecificLogic(
        IHighLevelService highLevelService,
        IAggregateService aggregateService)
    : base(aggregateService) {}
}</pre>
<p>Furthermore, by tapping into the power of <a href="http://www.castleproject.org/dynamicproxy" target="_blank">Castle DynamicProxy2</a>, the developer crafted a device that could dynamically generate aggregate services, completely removing the burden of implementing classes for each aggregate service interface.</p>
<p>Finally, the valiant adventurer approached the Senior Developer and presented the pattern and how it could free them from distress merely by <em>aggregating</em> constructor-injected dependencies into one dependency. Seeing its brilliance, the aggregate service pattern was implemented throughout the Source spreading light and joy to the team. Changes could now be made to the base class dependencies by merely changing the IAggregateService interface, and no change would have to be done to the subclasses ever again.</p>
<p>So great was the joy and relief that the Senior Developer declared: </p>
<blockquote><p><a title="AggregateService extension for Autofac" href="http://code.google.com/p/autofac/wiki/AggregateService" target="_blank">The Aggregate Service belongs to all developers of the land</a> and shall thus be <a href="http://code.google.com/p/autofac/wiki/Integration" target="_blank">contributed</a> to Autofac. </p></blockquote>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fdependency-injection-and-class-inheritance%2F&amp;linkname=Dependency%20Injection%20and%20Class%20Inheritance"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/Xcjmf8l84GPknAlSuzJFZGzHOm8/0/da"><img src="http://feedads.g.doubleclick.net/~a/Xcjmf8l84GPknAlSuzJFZGzHOm8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Xcjmf8l84GPknAlSuzJFZGzHOm8/1/da"><img src="http://feedads.g.doubleclick.net/~a/Xcjmf8l84GPknAlSuzJFZGzHOm8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qUT7tlze_5M:2BGPcKdn2Ls:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qUT7tlze_5M:2BGPcKdn2Ls:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qUT7tlze_5M:2BGPcKdn2Ls:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=qUT7tlze_5M:2BGPcKdn2Ls:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qUT7tlze_5M:2BGPcKdn2Ls:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=qUT7tlze_5M:2BGPcKdn2Ls:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/qUT7tlze_5M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/dependency-injection-and-class-inheritance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/dependency-injection-and-class-inheritance/</feedburner:origLink></item>
		<item>
		<title>Generate generic factories with Autofac</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/qjnNepO5nIs/</link>
		<comments>http://peterspattern.com/generate-generic-factories-with-autofac/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 13:07:07 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[autofac]]></category>
		<category><![CDATA[container]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=296</guid>
		<description><![CDATA[With Autofac, factory delegates can be generated based on delegate signatures. This article shows how this is done and also shows a solution to using generic delegates with Autofac]]></description>
			<content:encoded><![CDATA[<p>One of the features I like the most in Autofac is the ability to register a factory in the container. A factory in this context is &#8220;some method that knows how to build and return an instance of some type&#8221;.</p>
<p>Factories are useful when you need fine-grained control over when dependencies should be resolved. Also, if you have dependencies that requires data input (e.g. a constructor parameter) and you need some way of passing that data into the dependency, a factory is your friend.</p>
<p>With Autofac it gets even better. Using C# I can declare a delegate that represents the signature of such a factory, register the delegate in my container and voila! Autofac generates the implementation based on the signature.</p>
<p>So I could declare a delegate like this:</p>
<pre class="c-sharp:nogutter">public delegate ICustomerService CustomerServiceFactory();</pre>
<p>and have it injected in, say, one of my controller classes, like this:</p>
<pre class="code" lang="C#">
public class CustomerController
{
    private CustomerServiceFactory _customerServiceFactory;
    public CustomerController(CustomerServiceFactory customerServiceFactory)
    {
        _customerServiceFactory = customerServiceFactory;
    }
}
</pre>
<p>My controller now have the ability to decide <em>when</em> to create the service instance and still not need to know <em>how</em>.</p>
<p>To make the sample complete (thus far) I’ll show how the Autofac container setup looks like at this point:</p>
<pre class="code" lang="C#">var builder = new ContainerBuilder();
builder.Register&lt;CustomerService&gt;();
builder.RegisterGeneratedFactory&lt;CustomerServiceFactory&gt;();
builder.Register&lt;CustomerController&gt;();</pre>
<p>This works great. And was fairly easy too don&#8217;t think? Now imagine that these classes and delegates was a small part of a real system, with hundreds of controllers and services. Having to declare a factory delegate for each service becomes a pain, let aside registering them in the container.</p>
<p>Wouldn&#8217;t it be nice if we could declare only one factory that could build all service types? Turns out you can. Think about the following generic delegate:</p>
<pre class="code" lang="C#">public delegate T ServiceFactory&lt;T&gt;() where T:class;</pre>
<p>Our updated controller dependency now looks like this:</p>
<pre class="code" lang="C#">public class CustomerController
{
    private ServiceFactory&lt;CustomerService&gt; _customerServiceFactory;
    public CustomerController
        (ServiceFactory&lt;CustomerService&gt; customerServiceFactory)
    {
        _customerServiceFactory = customerServiceFactory;
    }
}</pre>
<p>Registering such a delegate in the container becomes a bit tricky, since we don&#8217;t know T at registration time. Even more so, we cannot generate the factory delegate at registration time! The solution is to register <em>the open generic type</em> coupled with a method that will generate the factory <em>when the dependency is asked for</em>. The Autofac setup should now look like this:</p>
<pre class="code" lang="C#">var builder = new ContainerBuilder();
builder.Register&lt;CustomerService&gt;().As();
builder
  .RegisterGeneratedFactoryFromOpenType(typeof(ServiceFactory&lt;&gt;));
builder.Register&lt;CustomerController&gt;();</pre>
<p>The <strong>RegisterGeneratedFactoryFromOpenType</strong> extension method does two things:</p>
<ol>
<li>Register the open generic type using <strong>builder.RegisterGeneric</strong></li>
<li>Attach factory generation code to the OnPreparing event.</li>
</ol>
<p>The OnPreparing event will be fired when Autofac tries to resolve a <em>closed version of the delegate</em>, in our case the ServiceFactory delegate. Since the event argument contains this type we have everything necessary for generating the factory implementation. And here&#8217;s the implementation of RegisterGeneratedFactoryFromOpenType:</p>
<pre class="code" lang="C#">public static IGenericRegistrar
    RegisterGeneratedFactoryFromOpenType
    (this ContainerBuilder builder, Type openFactoryType)
{
    return builder.RegisterGeneric(openFactoryType)
        .OnPreparing(Prepare);
}

static void Prepare(object sender, PreparingEventArgs args)
{
    var factoryType = args.Component
        .Descriptor.BestKnownImplementationType;
    var serviceType = factoryType
        .GetMethod("Invoke").ReturnType; 

    var service = new TypedService(serviceType);
    var factory = new FactoryGenerator(factoryType, service); 

    args.Instance = factory
        .GenerateFactory(args.Context, args.Parameters);
}</pre>
<p>Note: this code is based on the latest release of Autofac 1.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ljU2nddTXzjxdDQTByfVdJ0CUEw/0/da"><img src="http://feedads.g.doubleclick.net/~a/ljU2nddTXzjxdDQTByfVdJ0CUEw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ljU2nddTXzjxdDQTByfVdJ0CUEw/1/da"><img src="http://feedads.g.doubleclick.net/~a/ljU2nddTXzjxdDQTByfVdJ0CUEw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qjnNepO5nIs:6rEBY5mAtkk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qjnNepO5nIs:6rEBY5mAtkk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qjnNepO5nIs:6rEBY5mAtkk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=qjnNepO5nIs:6rEBY5mAtkk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=qjnNepO5nIs:6rEBY5mAtkk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=qjnNepO5nIs:6rEBY5mAtkk:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/qjnNepO5nIs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/generate-generic-factories-with-autofac/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://peterspattern.com/generate-generic-factories-with-autofac/</feedburner:origLink></item>
		<item>
		<title>Plugin mashup in FogBugz 7</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/ZPoivOSUU3A/</link>
		<comments>http://peterspattern.com/plugin-mashup-in-fogbugz-7/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 11:11:33 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[FogBugz]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=278</guid>
		<description><![CDATA[With the advent of FogBugz 7 and the new plugin system, new possibilities arise for us FogBugz users.  Here is a tip on how to extend cases in this brilliant system with a custom field and add some functionality to it. Similar to the Related Cases feature, my scenario was that I wanted to connect cases ]]></description>
			<content:encoded><![CDATA[<p>With the advent of <a title="FogBugz homepage" href="http://www.fogbugz.com" target="_blank">FogBugz 7</a> and the new plugin system, new possibilities arise for us FogBugz users.  Here is a tip on how to extend cases in this brilliant system with a custom field and add some functionality to it. Similar to the Related Cases feature, my scenario was that I wanted to connect cases to a wiki page with related information. My recipe is as follows:</p>
<h3>Prerequisites</h3>
<p>We need <a href="http://www.fogcreek.com/FogBugz/Plugins/plugin.aspx?ixPlugin=1" target="_blank">the Custom Field plugin by FogCreek</a> and <a href="http://www.fogcreek.com/FogBugz/plugins/plugin.aspx?ixPlugin=16" target="_blank">BugMonkey by Michael Pryor</a>. If you&#8217;re a FogBugz on Demand user these are readily available in the Plugins admin panel.</p>
<h3>Adding a custom field</h3>
<p>Next, configure the Custom Field plugin and add a number field named &#8220;Wiki Page&#8221; with the description &#8220;Related wiki page&#8221;. Make a note of the description since it will come in handy later.</p>
<p>You will now have an extra field on each case called Wiki Page in which we expect users to enter the page id of a related wiki.</p>
<h3>Making the field a link to the wiki page</h3>
<p>Now go and configure the BugMonkey plugin. This plugin enables javascript to be executed on every page in your FogBugz installation. Luckily, the FogCreek team have already added <a href="http://jquery.com/" target="_blank">JQuery</a> into FogBugz mix so we can ride on that. Add the following script in the javascript text area:</p>
<blockquote><p>var wikiPage = $(&#8220;.content[title='Related wiki page']&#8220;);<br />
wikiPage.html(&#8220;&lt;a href=&#8221;/?W + wikiPage.text() + &#8220;&gt;Related wiki page&lt;/a&gt;&#8221;);</p></blockquote>
<p>The content of the wiki page field is rendered as a div element with class &#8220;content&#8221; and a title containing the field description. Thus, using JQuery to look up the element is a breeze.</p>
<p>After grabbing the element it is straightforward to add an anchor pointing to the wiki page url.</p>
<h3>Conclusion</h3>
<p>Ideally I would love to see the Custom Field plugin add the field name to the html element, perhaps as and id. Apart from that, with a plugin system and an eager developer community, systems like FogBugz can really reach new levels of extendability without having to put all possible features into the product up front.</p>
<p>Thumbs up for a great product, Fog Creek!</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fplugin-mashup-in-fogbugz-7%2F&amp;linkname=Plugin%20mashup%20in%20FogBugz%207"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/rYkQJas7iVglM2FO1wXDLSRHVkI/0/da"><img src="http://feedads.g.doubleclick.net/~a/rYkQJas7iVglM2FO1wXDLSRHVkI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rYkQJas7iVglM2FO1wXDLSRHVkI/1/da"><img src="http://feedads.g.doubleclick.net/~a/rYkQJas7iVglM2FO1wXDLSRHVkI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=ZPoivOSUU3A:aYBpZW-Oftg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=ZPoivOSUU3A:aYBpZW-Oftg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=ZPoivOSUU3A:aYBpZW-Oftg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=ZPoivOSUU3A:aYBpZW-Oftg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=ZPoivOSUU3A:aYBpZW-Oftg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=ZPoivOSUU3A:aYBpZW-Oftg:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/ZPoivOSUU3A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/plugin-mashup-in-fogbugz-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/plugin-mashup-in-fogbugz-7/</feedburner:origLink></item>
		<item>
		<title>Windows 7 and booting a virtual hard drive</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/_KwCgUDi5HI/</link>
		<comments>http://peterspattern.com/windows-7-and-booting-a-virtual-hard-drive/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 12:52:36 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[AIK]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[bootmanager]]></category>
		<category><![CDATA[vhd]]></category>
		<category><![CDATA[wim2vhd]]></category>
		<category><![CDATA[windows7]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=123</guid>
		<description><![CDATA[Having isolated environments for doing development, testing or just trying out new stuff, is extremely valuable. I for one have several environments, one for each client I work for, and a couple for working with internal projects. In the early stone age we had to make do with multiple computers to achieve such isolated environments. ]]></description>
			<content:encoded><![CDATA[<p>Having isolated environments for doing development, testing or just trying out new stuff, is extremely valuable. I for one have several environments, one for each client I work for, and a couple for working with internal projects.</p>
<p>In the early stone age we had to make do with multiple computers to achieve such isolated environments. Then came the advent of emulators and virtual computers. For many years now we have had virtualization solutions that run virtualized computers, but with a performance cost in both resource consumption and processing speed. Mind you, the performance keeps improving with better hardware support.</p>
<p>With Windows 7 however, a hybrid solution is introduced. By virtualizing only the disk subsystem, Windows 7 is able to boot from a file system that is completely contained within a Virtual Hard Drive file, or VHD. The end result is that OS and applications execute on &#8220;the bare metal&#8221; while a thin virtualization layer redirects disk IO to the VHD file residing on the bare-metal disk.</p>
<p>Guest author Thomas Sandberg gives a quick rundown on how to set up booting from Virtual Hard Drives with Windows 7. Read the article <a href="/articles/create-and-boot-from-vhd-with-windows7">here</a>!</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fwindows-7-and-booting-a-virtual-hard-drive%2F&amp;linkname=Windows%207%20and%20booting%20a%20virtual%20hard%20drive"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/ctjJ7JIlHKmNBZ8NOYmm3VUxHDQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/ctjJ7JIlHKmNBZ8NOYmm3VUxHDQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ctjJ7JIlHKmNBZ8NOYmm3VUxHDQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/ctjJ7JIlHKmNBZ8NOYmm3VUxHDQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=_KwCgUDi5HI:h0uCjR3IQzw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=_KwCgUDi5HI:h0uCjR3IQzw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=_KwCgUDi5HI:h0uCjR3IQzw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=_KwCgUDi5HI:h0uCjR3IQzw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=_KwCgUDi5HI:h0uCjR3IQzw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=_KwCgUDi5HI:h0uCjR3IQzw:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/_KwCgUDi5HI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/windows-7-and-booting-a-virtual-hard-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/windows-7-and-booting-a-virtual-hard-drive/</feedburner:origLink></item>
		<item>
		<title>Using screen scraping to expose legacy web pages in RSS</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/c5VvoUcmcAw/</link>
		<comments>http://peterspattern.com/using-screen-scraping-to-expose-legacy-web-pages-in-rss/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 07:01:17 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[feedburner]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[screen-scraping]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=102</guid>
		<description><![CDATA[As part of my (almost) daily drive to and from one of my clients I pass through the sub-sea Oslofjord tunnel (Oslofjordtunnelen). Now what has driving got to do with screen scraping and RSS, you say? Hang on, I’m getting there. Below is a map extract that shows part of my route. The topmost pin ]]></description>
			<content:encoded><![CDATA[<p>As part of my (almost) daily drive to and from <a href="http://www.4subsea.com" target="_blank">one of my clients</a> I pass through the sub-sea Oslofjord tunnel (Oslofjordtunnelen). Now what has driving got to do with screen scraping and RSS, you say?</p>
<p>Hang on, I’m getting there.</p>
<p>Below is a map extract that shows part of my route. The topmost pin is where I start out, the bottom-most pin is the Oslofjord tunnel. The pin in the middle is where, more often than not, a sign shows up stating that the tunnel is closed for maintenance.  You can imagine my frustration when I’m forced to drive all the way back north to get around the Oslofjord!</p>
<div id="scid:84E294D0-71C9-4bd0-A0FE-95764E0368D9:e2670350-387d-4615-9077-777ab46b3ff6" class="wlWriterEditableSmartContent" style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"><a id="map-3e0ece7e-3120-4909-b228-fbbe8e4215e0" title="Click to view this map on Live.com" href="http://maps.live.com/default.aspx?v=2&amp;cp=59.77092~10.5455&amp;lvl=10&amp;style=r&amp;sp=aN.59.74221_10.41092_Tunnel%2520closed%2520sign_~aN.59.6608_10.60799_Subsea%2520tunnel_~aN.59.85723_10.49332_Peters%2520client_&amp;mkt=en-us&amp;FORM=LLWR"><img src="http://peterspattern.com/wp-content/uploads/2009/08/mapb0b74ff8bfb5.jpg" alt="Map picture" width="495" height="379" /></a></div>
<p>To avoid that pain I set out to find a feed with traffic status updates and ended up at <a href="http://www.vegvesen.no/trafikk/mobil/?report=601" target="_blank">this page</a> published by <a href="http://www.vegvesen.no/en/Home" target="_blank">the Norwegian Public Roads Administration (NPRA)</a>. The page have regularly updated traffic information (all in Norwegian mind you) but to my frustration all as static web pages. No feed in sight!</p>
<p>At last here comes the screen scraping into play. You could write up your own scraper in any modern runtime these days. But being a good/lazy developer I know there are already <a title="Feed43" href="http://www.feed43.com" target="_blank">quite good services</a> out there that makes it a breeze setting up feeds with data scraped off of web pages. And lo and behold, I now <a href="http://feeds.feedburner.com/VegmeldingerFraStatensVegvesen" target="_blank">burn a feed with the latest traffic updates</a>!</p>
<p>So… basking in the glory of my genius for a couple of days I thought it a good idea to write up this blog post for the greater good of mankind. To make the story a bit shorter, what I discovered while rummaging around the NPRA site is that they <a href="http://www.vegvesen.no/Trafikkinformasjon/Reiseinformasjon/Trafikkmeldinger" target="_blank">indeed have great support for RSS</a>!</p>
<p>Feeling a bit stupid I will now go and redirect my FeedBurner setup…and please let me know if there is a moral to this story.</p>
<p>Good night.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fusing-screen-scraping-to-expose-legacy-web-pages-in-rss%2F&amp;linkname=Using%20screen%20scraping%20to%20expose%20legacy%20web%20pages%20in%20RSS"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/3zaSZk00IQfv2Gj7tQdme6d0FrA/0/da"><img src="http://feedads.g.doubleclick.net/~a/3zaSZk00IQfv2Gj7tQdme6d0FrA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3zaSZk00IQfv2Gj7tQdme6d0FrA/1/da"><img src="http://feedads.g.doubleclick.net/~a/3zaSZk00IQfv2Gj7tQdme6d0FrA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=c5VvoUcmcAw:quYEXJKd0J0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=c5VvoUcmcAw:quYEXJKd0J0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=c5VvoUcmcAw:quYEXJKd0J0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=c5VvoUcmcAw:quYEXJKd0J0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=c5VvoUcmcAw:quYEXJKd0J0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=c5VvoUcmcAw:quYEXJKd0J0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/c5VvoUcmcAw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/using-screen-scraping-to-expose-legacy-web-pages-in-rss/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://peterspattern.com/using-screen-scraping-to-expose-legacy-web-pages-in-rss/</feedburner:origLink></item>
		<item>
		<title>Going to Microsoft PDC 2009!</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/TPlbfScmLtg/</link>
		<comments>http://peterspattern.com/going-to-microsoft-pdc-2009/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 22:19:34 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PDC]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=70</guid>
		<description><![CDATA[Only one year after the most successful PDC 08, I find myself (and my company) going to Los Angeles once more. PDC 09 looks promising with sessions covering the .Net Framework 4, Visual Studio and Team System 2010, Windows Azure, DirectX 11, Silverlight 3, and much more]]></description>
			<content:encoded><![CDATA[<p>Only one year after the most successful PDC 08, I find myself (and my company) going to Los Angeles once more. <a href="http://microsoftpdc.com/" target="_blank">PDC 09</a> looks promising with sessions covering the .Net Framework 4, Visual Studio and Team System 2010, Windows Azure, DirectX 11, Silverlight 3, and much more.</p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fgoing-to-microsoft-pdc-2009%2F&amp;linkname=Going%20to%20Microsoft%20PDC%202009%21"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/VRDRnYlJLO2PqW6wqHCH1gdGtY0/0/da"><img src="http://feedads.g.doubleclick.net/~a/VRDRnYlJLO2PqW6wqHCH1gdGtY0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VRDRnYlJLO2PqW6wqHCH1gdGtY0/1/da"><img src="http://feedads.g.doubleclick.net/~a/VRDRnYlJLO2PqW6wqHCH1gdGtY0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=TPlbfScmLtg:EeFBK2XSgVY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=TPlbfScmLtg:EeFBK2XSgVY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=TPlbfScmLtg:EeFBK2XSgVY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=TPlbfScmLtg:EeFBK2XSgVY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=TPlbfScmLtg:EeFBK2XSgVY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=TPlbfScmLtg:EeFBK2XSgVY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/TPlbfScmLtg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/going-to-microsoft-pdc-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/going-to-microsoft-pdc-2009/</feedburner:origLink></item>
		<item>
		<title>Moving Peter’s Pattern</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/n0j8DyG_zyg/</link>
		<comments>http://peterspattern.com/moving-peters-pattern/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 18:52:48 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Blogging]]></category>

		<guid isPermaLink="false">http://peterspattern.com/?p=21</guid>
		<description><![CDATA[The time have come for the trusty Eternia server to let go of my blog. I&#8217;m giving it this new home (presumably faster and more stable), with, as you probably think too,  a more befitting name. Now, for those of us that didn&#8217;t realize the value of services like FeedBurner when setting up a new blog, I ]]></description>
			<content:encoded><![CDATA[<p>The time have come for the trusty Eternia server to let go of my blog. I&#8217;m  giving it this new home (presumably faster and more stable), with, as you probably think too,  a more befitting  name.</p>
<p>Now, for those of us that didn&#8217;t realize the value of  services like <a title="FeedBurner" href="http://www.feedburner.com">FeedBurner</a> when setting up a new  blog, I will highlight one advantage that I wish I knew when I started out blogging. Namely  that exposing my feed via FeedBurner will save my faithful subscribers from  having to update their subscription when the blog will have to move.</p>
<p>The feed address is hereby  <a href="http://feeds.feedburner.com/PetersPattern">http://feeds.feedburner.com/PetersPattern</a>.  I can promise you that this link will not change. That is, unless <a href="http://www.google.com" target="_blank">Google</a> goes  out of business <img src='http://peterspattern.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fmoving-peters-pattern%2F&amp;linkname=Moving%20Peter%26%238217%3Bs%20Pattern"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/fFsbR0vQdpSdzHnQuZt-ypyiWRM/0/da"><img src="http://feedads.g.doubleclick.net/~a/fFsbR0vQdpSdzHnQuZt-ypyiWRM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fFsbR0vQdpSdzHnQuZt-ypyiWRM/1/da"><img src="http://feedads.g.doubleclick.net/~a/fFsbR0vQdpSdzHnQuZt-ypyiWRM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=n0j8DyG_zyg:pGCMmlZChXA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=n0j8DyG_zyg:pGCMmlZChXA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=n0j8DyG_zyg:pGCMmlZChXA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=n0j8DyG_zyg:pGCMmlZChXA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=n0j8DyG_zyg:pGCMmlZChXA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=n0j8DyG_zyg:pGCMmlZChXA:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/n0j8DyG_zyg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/moving-peters-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/moving-peters-pattern/</feedburner:origLink></item>
		<item>
		<title>Team Build and drop location share permissions</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/0AIE5_e1T1Y/</link>
		<comments>http://peterspattern.com/team-build-and-drop-location-share-permissions/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 13:02:00 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Team Build]]></category>
		<category><![CDATA[Team Foundation Server]]></category>

		<guid isPermaLink="false" />
		<description><![CDATA[I&#8217;ve recently banged my head against a simple, yet annoying problem with Team Build and the way build result files are published to the so-called drop location. In my case, this location is a share on our file server. Knowingly, the build service executes under a TFSBUILD account which I have given Co-Owner permission level ]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently banged my head against a simple, yet annoying problem with Team Build and the way build result files are published to the so-called drop location. In my case, this location is a share on our file server. Knowingly, the build service executes under a TFSBUILD account which I have given Co-Owner permission level at the share. </p>
<p>Everything builds and results are published, yet all builds are only partially successful. Digging around the somewhat unmanageable BuildLog.txt file I see that Test results from MSTest is published  via a call to http://tfs:8080/Build/v1.0/PublishTestResultsBuildService2.asmx which subsequently fails with this error: </p>
<p>&nbsp; The results directory &#8220;\\fileserver\tfsbuilds\BuildFolder.1\TestResults&#8221; could not be created for publishing.</p>
<p>The solution is quite simple. Since the actual publishing of test results is done by the PublishTestResultsBuildService2 service, executing under the TFSSERVICE account, we also need to give that account Co-Owner permissions to the drop location share.</p>
<p>Obvious? I think not <img src="http://blogs.eternia.cc/emoticons/emotion-1.gif" alt="Smile" />&nbsp; </p>
<p><img src="http://blogs.eternia.cc/aggbug.aspx?PostID=953" width="1" height="1"></p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fteam-build-and-drop-location-share-permissions%2F&amp;linkname=Team%20Build%20and%20drop%20location%20share%20permissions"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/Sbt_NsCiSvkH8VgJpJmwEawrlPA/0/da"><img src="http://feedads.g.doubleclick.net/~a/Sbt_NsCiSvkH8VgJpJmwEawrlPA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Sbt_NsCiSvkH8VgJpJmwEawrlPA/1/da"><img src="http://feedads.g.doubleclick.net/~a/Sbt_NsCiSvkH8VgJpJmwEawrlPA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=0AIE5_e1T1Y:Ro2eosQjYao:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=0AIE5_e1T1Y:Ro2eosQjYao:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=0AIE5_e1T1Y:Ro2eosQjYao:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=0AIE5_e1T1Y:Ro2eosQjYao:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=0AIE5_e1T1Y:Ro2eosQjYao:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=0AIE5_e1T1Y:Ro2eosQjYao:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/0AIE5_e1T1Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/team-build-and-drop-location-share-permissions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/team-build-and-drop-location-share-permissions/</feedburner:origLink></item>
		<item>
		<title>ASP.Net Profile performance or lack thereof</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/LqiKDC90yrM/</link>
		<comments>http://peterspattern.com/asp-net-profile-performance-or-lack-thereof/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 11:39:00 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Membership]]></category>

		<guid isPermaLink="false" />
		<description><![CDATA[In a customer solution I&#8217;ve been working on we use ASP.Net Membership and Profile to store information about users. We use profile data extensively in various reports and listings throughout the solution. Putting the solution under some regular user activity though, showed some really poor performance when producing reports. Some of these are large reports ]]></description>
			<content:encoded><![CDATA[<p>In a customer solution I&#8217;ve been working on we use ASP.Net Membership and Profile to store information about users. We use profile data extensively in various reports and listings throughout the solution.</p>
<p>Putting the solution under some regular user activity though, showed some really poor performance when producing reports. Some of these are large reports mind you so I had to go digging to figure out what was going on. I always check SQL Server activity first, looking for waiting processes and locks. And yes, there it was: an exclusive lock on aspnet_Users. Why, we&#8217;re only doing reads in these reports!</p>
<p>Further digging into which stored procedures are touching the aspnet_Users table I discovered that the aspnet_Profile_GetProfileProperties actually do an update on the aspnet_Users.LastActivityDate column. This stored procedure does not take any parameter to control this behavior. So a quick solution to the problem was removing the updating part. </p>
<p>Of course, after figuring out what the problem was I suspected that others have figured this out too. Go <a href="http://www.dotnet-friends.com/fastcode/sql/fastcodeinsqld7f4ebfa-dcc1-4f18-a073-3f3d10885207.aspx" target="_blank">here</a> for a view of the stored procedure before and after surgery.</p>
<p><img src="http://blogs.eternia.cc/aggbug.aspx?PostID=947" width="1" height="1"></p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fasp-net-profile-performance-or-lack-thereof%2F&amp;linkname=ASP.Net%20Profile%20performance%20or%20lack%20thereof"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/7kGQ2oFTWrDogHBCPEAAc2gNQqA/0/da"><img src="http://feedads.g.doubleclick.net/~a/7kGQ2oFTWrDogHBCPEAAc2gNQqA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7kGQ2oFTWrDogHBCPEAAc2gNQqA/1/da"><img src="http://feedads.g.doubleclick.net/~a/7kGQ2oFTWrDogHBCPEAAc2gNQqA/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=LqiKDC90yrM:Ro2eosQjYao:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=LqiKDC90yrM:Ro2eosQjYao:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=LqiKDC90yrM:Ro2eosQjYao:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=LqiKDC90yrM:Ro2eosQjYao:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=LqiKDC90yrM:Ro2eosQjYao:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=LqiKDC90yrM:Ro2eosQjYao:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/LqiKDC90yrM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/asp-net-profile-performance-or-lack-thereof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/asp-net-profile-performance-or-lack-thereof/</feedburner:origLink></item>
		<item>
		<title>Sql Server, WMI and PowerShell</title>
		<link>http://feedproxy.google.com/~r/PetersPattern/~3/OakAEWeicUU/</link>
		<comments>http://peterspattern.com/sql-server-wmi-and-powershell/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 08:59:00 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false" />
		<description><![CDATA[So I started out on a quest: a quest for the overview of installed SQL Server instances on my machine. With previous versions we had to crawl the tangled forest of the Registry to get this information. Knowing that with SQL Server 2005 there is now a WMI namespace that can be queried, and with ]]></description>
			<content:encoded><![CDATA[<p>So I started out on a quest: a quest for the overview of installed SQL Server instances on my machine. With previous versions we had to crawl the tangled forest of the Registry to get this information. Knowing that with SQL Server 2005 there is now a WMI namespace that can be queried, and with <a href="http://blogs.msdn.com/sqlexpress/archive/2006/07/29/682254.aspx" target="_blank">this sample</a> I could easily enumerate my 2005 instances (both full and express versions). It was all there in the ROOT\Microsoft\SqlServer\ComputerManagement namespace!</p>
<p>Encouraged by the simplicity of getting instances through WMI I moved on to install the latest SQL Server 2008 bits. I wanted to try out the Express CTP, downloaded and installed it, and ran my code again.</p>
<p>&#8230;no sign of the 2008 instance. Thinking that they surely haven&#8217;t ripped out WMI support in 2008 I needed a tool to browse the WMI namespace to find out what was going on. Luckily, the PowerShell Guy have made <a href="http://thepowershellguy.com/blogs/posh/archive/2008/03/05/powershell-wmi-explorer-update-for-powershell-v2-ctp.aspx" target="_blank">a nice PowerShell script</a> that explores the WMI namespaces in a nice and graphical UI.</p>
<p>But the script requires PowerShell V2 so now I had to go on a side-quest, a quest to get the WMI Explorer running. Installing <a href="http://blogs.msdn.com/powershell/" target="_blank">PowerShell</a> V2 CTP on Windows XP requires installing <a href="http://msdn2.microsoft.com/en-us/library/aa384426.aspx" target="_blank">Windows Remote Management</a>, the Microsoft implementation of WS-Management protocol. For the record, WRM is built into Windows Server 2008 (and probably Vista too) but needs to be installed separately on Windows Server 2003 and Windows XP. And yes, I had to throw out PowerShell 1.0 (what happened to side-by-side installations?) The quirk with removing PS 1.0 is that in Add/Remove Programs, remember to <a href="http://blogs.msdn.com/powershell/archive/2007/01/09/behind-powershell-installer-for-windows-xp-windows-server-2003.aspx" target="_blank">Show Updates</a> in order to see the &#8220;Windows PowerShell(TM) 1.0&#8243; entry under &#8220;Windows XP &#8211; Software Updates&#8221;.</p>
<p>The rest went well, and I&#8217;m now back on track browsing the WMI namespace. And lo and behold, they have indeed changed the WMI schema with SQL Server 2008. The location is now ROOT\Microsoft\SqlServer\ComputerManagement10. </p>
<p>But this wasn&#8217;t the treasure I set out to find! Instead of crawling the registry we now have to crawl through WMI. First, I will have to query the ROOT\Microsoft\SqlServer\__NAMESPACE in order to discover what ComputerManagementXX namespaces are installed. Okey, so it is a bit easier than the registry anyway. When I go into the ComputerManagement10 namespace and look up instances of the SqlService class, I get a nice list of all SQL Server instances, both 2005 and 2008.</p>
<p>Lessons learned? Microsoft warned us that &#8220;the Registry will change&#8221;. It seems that the same goes for WMI.&nbsp;</p>
<p>&nbsp;<b>Update</b>: couple this with <a href="http://blogs.msdn.com/saveenr/archive/2005/11/18/494366.aspx" target="_blank">strongly typed classes for accessing WMI</a> for extreme simplicity <img src="http://blogs.eternia.cc/emoticons/emotion-1.gif" alt="Smile" /></p>
<p></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="http://blogs.eternia.cc/aggbug.aspx?PostID=946" width="1" height="1"></p>
<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Twitter" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Facebook" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Reddit" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Delicious" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="Digg" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fpeterspattern.com%2Fsql-server-wmi-and-powershell%2F&amp;linkname=Sql%20Server%2C%20WMI%20and%20PowerShell"><img src="http://peterspattern.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a> </p>
<p><a href="http://feedads.g.doubleclick.net/~a/dUGFu7PX6e1CgmzKv7807KELe1A/0/da"><img src="http://feedads.g.doubleclick.net/~a/dUGFu7PX6e1CgmzKv7807KELe1A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dUGFu7PX6e1CgmzKv7807KELe1A/1/da"><img src="http://feedads.g.doubleclick.net/~a/dUGFu7PX6e1CgmzKv7807KELe1A/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PetersPattern?a=OakAEWeicUU:Ro2eosQjYao:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=OakAEWeicUU:Ro2eosQjYao:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/PetersPattern?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=OakAEWeicUU:Ro2eosQjYao:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=OakAEWeicUU:Ro2eosQjYao:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PetersPattern?a=OakAEWeicUU:Ro2eosQjYao:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PetersPattern?i=OakAEWeicUU:Ro2eosQjYao:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PetersPattern/~4/OakAEWeicUU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://peterspattern.com/sql-server-wmi-and-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://peterspattern.com/sql-server-wmi-and-powershell/</feedburner:origLink></item>
	</channel>
</rss>
