<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>David Aiken : General</title><link>http://blogs.msdn.com/daiken/archive/tags/General/default.aspx</link><description>Tags: General</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>VSTSMMD requirements</title><link>http://blogs.msdn.com/daiken/archive/2008/01/29/vstsmmd-requirements.aspx</link><pubDate>Wed, 30 Jan 2008 01:57:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7314266</guid><dc:creator>daiken</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/daiken/comments/7314266.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=7314266</wfw:commentRss><description>&lt;p&gt;Not long ago, I posted about the &lt;a href="http://blogs.msdn.com/daiken/archive/2008/01/09/new-year-models-code-discovery-and-management-pack-generation.aspx" target="_blank"&gt;new version of the Management Model Designer&lt;/a&gt;. One thing I did not post was the requirements, and since I've been asked a few times now, I thought I best blog it.&lt;/p&gt;  &lt;p&gt;The designer will require VSTS2008 (yes that is Team System as in Team Architect, Team Developer etc). It will not run in Pro or Std. The designer also has a dependency on the Guidance Automation Extensions (GAX).&lt;/p&gt;  &lt;p&gt;Hope this helps.&lt;/p&gt;  &lt;p&gt;THIS POSTING IS PROVIDED &amp;quot;AS IS&amp;quot; WITH NO WARRANTIES, AND CONFERS NO RIGHTS NOR WAS IT WRITTEN IN A FACTORY PRODUCING NUTS&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7314266" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/VSMMD/default.aspx">VSMMD</category></item><item><title>LINQ and WCF Syndication</title><link>http://blogs.msdn.com/daiken/archive/2008/01/28/linq-and-wcf-syndication.aspx</link><pubDate>Tue, 29 Jan 2008 10:44:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7300895</guid><dc:creator>daiken</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/daiken/comments/7300895.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=7300895</wfw:commentRss><description>&lt;p&gt;I must admit, having survived the last 22 data access technologies, I'm really liking LINQ. The fact that I can use LINQ to query just about anything, against just about any data source is pretty cool. Lists and Arrays beware. Nested Correlated sub-queries are near - I also love to hear &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=357683" target="_blank"&gt;Luca&lt;/a&gt; speak about it.&lt;/p&gt;  &lt;p&gt;Anyway, while preparing the latest DinnerNow release (coming soon), I had to rewrite the RSS feed for the restaurant. Obviously using the Syndication Support in WCF.&lt;/p&gt;  &lt;p&gt;Since the Feed is simply returning menu items, you can imagine its a simple database call to return the menu items, then a loop to create syndication feed items for each one, then spit them out. Fine, but with LINQ, you can miss most of that out. In fact when I originally wrote this, it had 1 line of code which returned the results of a LINQ query. Some people thought this might be too much so I split it into many more lines as shown below.&lt;/p&gt;  &lt;p&gt;Key in creating the Syndication items is line 15, as part of the LINQ query. The query projects directly into SyndicationItems. Note also the Links property being populated on line 27 - all pretty neat.&lt;/p&gt;  &lt;p&gt;Since the feed type (atom or rss) is simply formatting, I actually specified this as a parameter and lines 37 to 39 work out which formatter to use, based upon the URL.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; System.ServiceModel.Syndication.SyndicationFeedFormatter GetMenuItems(&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; feedType, &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; restaurantName, &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; menuType)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;     var db = &lt;span class="kwrd"&gt;new&lt;/span&gt; DinnerNowDataContext();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;     Uri incomingURI = (OperationContext.Current == &lt;span class="kwrd"&gt;null&lt;/span&gt; ? &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;http://localhost/&amp;quot;&lt;/span&gt;) : &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        OperationContext.Current.IncomingMessageHeaders.To);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;     var items = from mi &lt;span class="kwrd"&gt;in&lt;/span&gt; db.MenuItems.AsEnumerable()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;where&lt;/span&gt; ((mi.Menu.Restaurant.Name == restaurantName) &amp;amp;&amp;amp; (mi.Menu.MenuType.Trim() == menuType))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        orderby mi.Name&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        select &lt;span class="kwrd"&gt;new&lt;/span&gt; SyndicationItem()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            Title = SyndicationContent.CreatePlaintextContent(mi.Name),&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            PublishDate = DateTime.MinValue,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            LastUpdatedTime = DateTime.MinValue,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            Id = mi.MenuId.ToString(),&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            Content = &lt;span class="kwrd"&gt;new&lt;/span&gt; TextSyndicationContent(&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        String.Format(&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            CultureInfo.CurrentCulture,&lt;span class="str"&gt;@&amp;quot;&amp;lt;p&amp;gt;{0}&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;img src='{1}/{2}' style='border: 0px;width:216px;height:174px;' /&amp;gt;&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                        mi.Description,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                        &lt;span class="str"&gt;&amp;quot;/DinnerNow&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                        mi.ImageLocation), TextSyndicationContentKind.Html),&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            Links = { SyndicationLink.CreateAlternateLink(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(incomingURI.AbsoluteUri + &lt;span class="str"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + mi.Name)) }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;         };&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;     SyndicationFeed feed = &lt;span class="kwrd"&gt;new&lt;/span&gt; SyndicationFeed(&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        &lt;span class="str"&gt;&amp;quot;DinnerNow - Menu Items&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="str"&gt;&amp;quot;Menu Items for Restaurant&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        incomingURI,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        items.ToList&amp;lt;SyndicationItem&amp;gt;()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        );&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;     &lt;span class="kwrd"&gt;return&lt;/span&gt; (feedType.ToLower(CultureInfo.CurrentCulture).Equals(&lt;span class="str"&gt;&amp;quot;atom&amp;quot;&lt;/span&gt;) ?&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        (&lt;span class="kwrd"&gt;new&lt;/span&gt; Atom10FeedFormatter(feed)) &lt;span class="kwrd"&gt;as&lt;/span&gt; SyndicationFeedFormatter :&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; Rss20FeedFormatter(feed));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Below is the contract, so you can see how the URL is put together. Something like http://localhost/DinnerNow/service/menussearchservice.svc/rss/restaurants/NorthWind/Dinner would activate the service.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[OperationContract]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;[WebGet(UriTemplate = &lt;span class="str"&gt;@&amp;quot;/{feedType}/restaurants/{restaurantName}/{menuType}&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;SyndicationFeedFormatter GetMenuItems(&lt;span class="kwrd"&gt;string&lt;/span&gt; feedType, &lt;span class="kwrd"&gt;string&lt;/span&gt; restaurantName, &lt;span class="kwrd"&gt;string&lt;/span&gt; menuType);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Minus the contract, there really is only 5 lines of code - albeit split into multiple lines. Whilst this in itself is not that cool, the fact my code is no longer plagued with mind-numbing foreach loops is an absolute blessing. (re-write the above using ADO.NET if you want to see what I mean)&lt;/p&gt;

&lt;p&gt;Long Live LINQ...&lt;/p&gt;

&lt;p&gt;Note: this post was never meant to be a tutorial, simply a look how cool this is...&lt;/p&gt;

&lt;p&gt;THIS POSTING IS PROVIDED &amp;quot;AS IS&amp;quot; WITH NO WARRANTIES, AND CONFERS NO RIGHTS &lt;/p&gt;

&lt;p&gt;EVEN IF YOU HAVE A NOTE FROM YOUR MUM&lt;/p&gt;

&lt;p&gt;&lt;font face="Consolas" color="#000000" size="2"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7300895" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/DinnerNow/default.aspx">DinnerNow</category><category domain="http://blogs.msdn.com/daiken/archive/tags/WCF/default.aspx">WCF</category></item><item><title>.NET ROCKS</title><link>http://blogs.msdn.com/daiken/archive/2008/01/11/net-rocks.aspx</link><pubDate>Fri, 11 Jan 2008 19:35:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7076252</guid><dc:creator>daiken</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/daiken/comments/7076252.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=7076252</wfw:commentRss><description>&lt;p&gt;It was my great pleasure to chat with Carl and Richard earlier this week on &lt;a href="http://www.dotnetrocks.com"&gt;www.dotnetrocks.com&lt;/a&gt;. The show is entitled &amp;quot;&lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=306"&gt;David Aiken on Bridging the Gap between Dev and IT&lt;/a&gt;&amp;quot; and talks about working with IT Pros to build better managed applications, some of the technologies and strategies you can adopt to make it easier and PowerShell (I have to mention PowerShell everywhere).&lt;/p&gt;  &lt;p&gt;One thing I would like to say is that chatting with Carl and Richard was almost the easiest thing I've done. Not only are they super easy to talk too, they also totally get what you are saying and can ask great questions and comment from their own experiences - which makes the conversation even better. (as its not just me on a rant). Do please check out the show and even better subscribe to the RSS feed from here &lt;a title="http://www.intellectualhedonism.com/SyndicationService.asmx/GetRssCategory?categoryName=dnr" href="http://www.intellectualhedonism.com/SyndicationService.asmx/GetRssCategory?categoryName=dnr"&gt;http://www.intellectualhedonism.com/SyndicationService.asmx/GetRssCategory?categoryName=dnr&lt;/a&gt; in your favorite Zune like media device and listen to the other 305 episodes.&lt;/p&gt;  &lt;p&gt;Thanks Carl and Richard - .net ROCKS&lt;/p&gt;  &lt;p&gt;THIS POSTING IS PROVIDED &amp;quot;AS IS&amp;quot; WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7076252" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/.net+Rocks/default.aspx">.net Rocks</category></item><item><title>New Year = Models, Code Discovery and Management Pack Generation</title><link>http://blogs.msdn.com/daiken/archive/2008/01/09/new-year-models-code-discovery-and-management-pack-generation.aspx</link><pubDate>Thu, 10 Jan 2008 00:17:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7045648</guid><dc:creator>daiken</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/daiken/comments/7045648.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=7045648</wfw:commentRss><description>&lt;p&gt;Some of you may have already seen the existing Management Model Designer from &lt;a href="http://www.codeplex.com/dfo"&gt;http://www.codeplex.com/dfo&lt;/a&gt; or seen the channel 9 screen casts &lt;a title="The DFO Show - Designing a Health Model with the Visual Studio Management Model Designer" href="http://channel9.msdn.com/ShowPost.aspx?PostID=297288"&gt;The DFO Show - Designing a Health Model with the Visual Studio Management Model Designer&lt;/a&gt; or &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=298011"&gt;The DFO Show - Implementing a Health Model with the Visual Studio Management Model Designer&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Well we've been working hard on a new version which will CTP in the next few weeks.&lt;/p&gt;  &lt;p&gt;Remember the previous version of the tool allowed you to design a health model, then generate the instrumentation code that implemented it. The new version has some pretty significant new features.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Discovery of Existing Instrumentation Code&lt;/strong&gt;, will allow you to bring into the model any instrumentation code you already have in your application. It doesn't matter if its event log messages, performance counters, WMI events or even Enterprise Library. The designer will find it. You don't even need the source, as the scanner uses the IL!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/NewYearModelsCodeDiscoveryandManagementP_BAD2/image_4.png"&gt;&lt;img height="93" alt="image" src="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/NewYearModelsCodeDiscoveryandManagementP_BAD2/image_thumb_1.png" width="233" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Generation of a System Center Operations Manager 2007 Management Pack&lt;/strong&gt; means you no longer have to hand craft a management pack for your model. You simply hit a button and out drops a management pack. You can import this management pack directly into Operations Manager and without change Operations Manager will find all instances of your application and begin monitoring.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/NewYearModelsCodeDiscoveryandManagementP_BAD2/image_6.png"&gt;&lt;img height="432" alt="image" src="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/NewYearModelsCodeDiscoveryandManagementP_BAD2/image_thumb_2.png" width="640" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The new designer also defines more meaningful entities such as web sites, services, etc. which links to the automated discovery in Operations Manager.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/NewYearModelsCodeDiscoveryandManagementP_BAD2/image_2.png"&gt;&lt;img height="433" alt="Designer Surface Screenshot" src="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/NewYearModelsCodeDiscoveryandManagementP_BAD2/image_thumb.png" width="595" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Couple the 2 new big features together, and you end up with the capability of discovering instrumentation in your app, mapping this into a health model, and generating a fully operation management pack. With the existing instrumentation generation, you can now turn your application into something that can easily monitored and maintained once deployed.&lt;/p&gt;  &lt;p&gt;Watch out for an update and link to download when its released in a few weeks time.&lt;/p&gt;  &lt;p&gt;THIS POSTING IS PROVIDED &amp;quot;AS IS&amp;quot; WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7045648" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/Instrumentation/default.aspx">Instrumentation</category><category domain="http://blogs.msdn.com/daiken/archive/tags/VSMMD/default.aspx">VSMMD</category></item><item><title>Test Drivin' and installin</title><link>http://blogs.msdn.com/daiken/archive/2007/08/07/test-drivin-and-installin.aspx</link><pubDate>Wed, 08 Aug 2007 03:36:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4285413</guid><dc:creator>daiken</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/daiken/comments/4285413.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=4285413</wfw:commentRss><description>&lt;p&gt;I've been on vacation - which really means I haven't done any work for the last few weeks. Now I'm back and working on a super cool project, which I will share in a few weeks.&lt;/p&gt; &lt;p&gt;The project involves writing some code which is not part of &lt;strong&gt;DinnerNow&lt;/strong&gt;! (Although we did drop an Orcas Beta 2 version this week on codeplex &lt;a title="http://www.codeplex.com/DinnerNow/Release/ProjectReleases.aspx?ReleaseId=6232" href="http://www.codeplex.com/DinnerNow/Release/ProjectReleases.aspx?ReleaseId=6232"&gt;http://www.codeplex.com/DinnerNow/Release/ProjectReleases.aspx?ReleaseId=6232&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;Since we learnt a bunch of stuff building DinnerNow, I thought it would be good to adopt the best practices from the start.&lt;/p&gt; &lt;p&gt;First,&amp;nbsp; I'm adopting a TDD approach. So you would think my first piece of code was a test. WRONG! My first piece of code is the installer!&lt;/p&gt; &lt;p&gt;Installer? - there is nothing to install. Correct. But there is still an installer project, which compiles and builds and installs pretty much nothing. (It actually installs a DLL from the 1st project - the DLL contains an empty class otherwise you cannot build an installer). I've decided to use &lt;a href="http://wix.sourceforge.net/"&gt;WIX&lt;/a&gt; as the installer technology (the same as we used for DinnerNow)&lt;/p&gt; &lt;p&gt;2nd task - another Installer! That is correct, since this is another project that won't be shipping binary code (it's a sample), there needs to be a way to install the source code. Since I now have source code, the first installer, I need a way of installing that.&lt;/p&gt; &lt;p&gt;So now I have 2 installers and no code to speak of. What does that give me. Well, I am already in "ship" mode. I don't have to scramble around at the end of the project, figuring out how to install and configure things. &lt;/p&gt; &lt;p&gt;If someone wants to take a look or to test, I hit F5 and out pops an MSI.&lt;/p&gt; &lt;p&gt;Next, a unit test for a Windows PowerShell CmdLet that doesn't exist...&lt;/p&gt; &lt;p&gt;THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4285413" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/DinnerNow/default.aspx">DinnerNow</category><category domain="http://blogs.msdn.com/daiken/archive/tags/Installer/default.aspx">Installer</category></item><item><title>Visual Studio Management Model Designer on Channel 9</title><link>http://blogs.msdn.com/daiken/archive/2007/04/03/visual-studio-management-model-designer-on-channel-9.aspx</link><pubDate>Wed, 04 Apr 2007 06:51:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2023139</guid><dc:creator>daiken</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/daiken/comments/2023139.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=2023139</wfw:commentRss><description>&lt;p&gt;Today&amp;nbsp;I posted the 2nd of 2 short screencasts on using the Visual Studio Management Model Designer (VSMMD).&lt;/p&gt; &lt;p&gt;The first screencast shows how you can use the tool to &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=297288"&gt;design a management model&lt;/a&gt;. The second screencast shows how you can use the model to &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=298011"&gt;generate implementation code&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Our first big test for customers is in 12 days time when we present a new version of my &lt;a href="http://blogs.msdn.com/daiken/archive/2007/03/05/design-for-operations-workshop.aspx"&gt;Design for Operations workshop&lt;/a&gt;. The workshop covers the entire end-to-end lifecycle of building a manageable application, from concepts, model design, instrumentation, handling configuration via&amp;nbsp;group policy and WMI&amp;nbsp;and providing a administration surface using Windows PowerShell and MMC. Finally, this accumulates in a System Center Operations Manager Management Pack being constructed. &lt;/p&gt; &lt;p&gt;Many of the sessions this time around are being presented by some superstars from the product teams - this I am very much looking forward to as its always good to hear things form the horses mouth so to speak.&lt;/p&gt; &lt;p&gt;THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2023139" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/VSMMD/default.aspx">VSMMD</category></item><item><title>Announcing the Visual Studio Management Model Designer VSMMD</title><link>http://blogs.msdn.com/daiken/archive/2007/03/30/announcing-the-visual-studio-management-model-designer-vsmmd.aspx</link><pubDate>Sat, 31 Mar 2007 01:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1996142</guid><dc:creator>daiken</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/daiken/comments/1996142.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=1996142</wfw:commentRss><description>&lt;P&gt;Today we got one step closer to building manageable applications. On codeplex, right now, is the bright shiney new Visual Studio Management Model Designer.&lt;/P&gt;
&lt;P&gt;The designer, available on Codeplex at &lt;A href="http://www.codeplex.com/dfo" mce_href="http://www.codeplex.com/dfo"&gt;http://www.codeplex.com/dfo&lt;/A&gt; , is built upon the Visual Studio DSL. The designer allows Architects to describe a health model including defining Managed Entities, Aspects and Health State Indicators, as well as specifying abstract and concrete implementations for multiple trust levels. &lt;/P&gt;
&lt;P&gt;Furthermore the health model can be used to auto-generate the actual .net implementation code for writing events and performance counters. This will significantly reduce the amount of developer effort required to build manageable applications.&lt;/P&gt;
&lt;P&gt;Confused? &lt;/P&gt;
&lt;P&gt;There is also a 300+ page guide on how to use the tool and design for operations in general which will be available next week. &lt;/P&gt;
&lt;P&gt;Although the tool is a prototype/CTP, it is fully functional and can be used today to make your applications more manageable.&lt;/P&gt;THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1996142" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/Instrumentation/default.aspx">Instrumentation</category><category domain="http://blogs.msdn.com/daiken/archive/tags/VSMMD/default.aspx">VSMMD</category></item><item><title>Windows PowerShell in the Longhorn Server box</title><link>http://blogs.msdn.com/daiken/archive/2007/03/29/windows-powershell-in-the-longhorn-server-box.aspx</link><pubDate>Fri, 30 Mar 2007 08:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1992578</guid><dc:creator>daiken</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/daiken/comments/1992578.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=1992578</wfw:commentRss><description>&lt;P&gt;I know, i know. It was announced 2 days ago at MMS &lt;A href="http://blogs.msdn.com/powershell/archive/2007/03/28/announced-powershell-to-ship-in-windows-server-longhorn.aspx" mce_href="http://blogs.msdn.com/powershell/archive/2007/03/28/announced-powershell-to-ship-in-windows-server-longhorn.aspx"&gt;Windows PowerShell will be in the box on Longhorn Server&lt;/A&gt;. (I&amp;nbsp;sometimes do things that have nothing to do with Powershell).&lt;/P&gt;
&lt;P&gt;Rejoice and be merry.&lt;/P&gt;
&lt;P&gt;THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1992578" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>Technology Leaders Submit Modeling Specification to the World Wide Web Consortium</title><link>http://blogs.msdn.com/daiken/archive/2007/03/27/technology-leaders-submit-modeling-specification-to-the-world-wide-web-consortium.aspx</link><pubDate>Tue, 27 Mar 2007 23:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1967395</guid><dc:creator>daiken</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/daiken/comments/1967395.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=1967395</wfw:commentRss><description>&lt;P&gt;So SML has now been &lt;A href="http://www.microsoft.com/presspass/press/2007/mar07/03-22W3CSMLPR.mspx" target=_blank mce_href="http://www.microsoft.com/presspass/press/2007/mar07/03-22W3CSMLPR.mspx"&gt;submitted to the World Wide Web Consortium&lt;/A&gt; (W3C). SML, or Service Modeling Langauge, defines a consistent way to communicate how networks, applications servers and other IT resources are described, or modeled, in XML. SML is a fundamental building block of DSI and its standardization is significant.&lt;/P&gt;
&lt;P&gt;The idea behind SML is quiet simple. If you can model some knowledge about an application, a service, an SLA, a Router, a OS, Hardware, Maintenance Windows, Security Policy... basically anything... and you store this knowledge/model in a format that is a standard and consumable by software - you can then use software to act upon the knowledge held in the model. &lt;/P&gt;
&lt;P&gt;For example, if you stored depedency information in a model, then that model could be used to test the computer meets the requiremens for the application. Simple, yes.&lt;/P&gt;
&lt;P&gt;Why SML? Well suppose you wanted to provide Microsoft Operations Manager with monitoring information, Microsoft Configuration Manager with configuration settings etc. you could build tools to generate specific Ops Mgr or Config Mgr documents - this would take time and require specific knowledge of both products.&lt;/P&gt;
&lt;P&gt;Or you could simply generate SML. See picture.&lt;/P&gt;
&lt;P&gt;&lt;IMG height=447 src="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/TechnologyLeadersSubmitModelingSpecifica_C01C/SML%20Model%5B9%5D.jpg" width=640 mce_src="http://blogs.msdn.com/blogfiles/daiken/WindowsLiveWriter/TechnologyLeadersSubmitModelingSpecifica_C01C/SML%20Model%5B9%5D.jpg"&gt; &lt;/P&gt;
&lt;P&gt;That's the idea. Today we have some of the starting blocks in place. Tomorrow....&lt;/P&gt;
&lt;P&gt;THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1967395" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/daiken/archive/tags/SML/default.aspx">SML</category></item><item><title>MMS 2006</title><link>http://blogs.msdn.com/daiken/archive/2006/05/05/590318.aspx</link><pubDate>Fri, 05 May 2006 02:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:590318</guid><dc:creator>daiken</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/daiken/comments/590318.aspx</comments><wfw:commentRss>http://blogs.msdn.com/daiken/commentrss.aspx?PostID=590318</wfw:commentRss><description>&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The Microsoft Management Summit 2006 (MMS) is hosted in San Diego this year and is the only conference that focuses entirely on management with over 3,000 attendees.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Bob Muglia opened the show with a keynote. Here are the key highlights:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;The new name for Monad is &lt;B&gt;Windows Powershell&lt;/B&gt;, which will ship Q4 2006. (get the latest build RC1 from &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=2B0BBFCD-0797-4083-A817-5E6A054A85C9&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=2B0BBFCD-0797-4083-A817-5E6A054A85C9&amp;amp;displaylang=en&lt;/A&gt;) &lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;WS-Management&lt;/B&gt; is now a preliminary &lt;B&gt;DMFT standard.&lt;/B&gt; (DMFT - Distributed Management Task Force)&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;Microsoft Operations Manager v3&lt;/B&gt; is now known as &lt;B&gt;Microsoft System Center Operations Manager 2007&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;B&gt;Microsoft Systems Management Server v4&lt;/B&gt; is now known as &lt;B&gt;Microsoft System Center Configuration Manager 2007&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;A new member of the System Center family was announced, &lt;B&gt;Microsoft System Center “Service Desk”&lt;/B&gt;. This help desk, knowledge management and IT Workflow product is based upon MOF and ITIL best practices and leverages Windows Workflow Foundation.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;You can find out more at the newly launched System Center site at &lt;A href="http://www.microsoft.com/windowsserversystem/systemcenter/default.mspx"&gt;http://www.microsoft.com/windowsserversystem/systemcenter/default.mspx&lt;/A&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;See the official press release at &lt;A href="http://www.microsoft.com/presspass/press/2006/apr06/04-25MMS06KeynotePR.mspx"&gt;http://www.microsoft.com/presspass/press/2006/apr06/04-25MMS06KeynotePR.mspx&lt;/A&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;THIS POSTING IS PROVIDED "AS IS" WITH NO WARRANTIES, AND CONFERS NO RIGHTS&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=590318" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/daiken/archive/tags/General/default.aspx">General</category></item></channel></rss>