<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>James Kovacs' Weblog</title>
    <link>http://www.jameskovacs.com/blog/</link>
    <description />
    <language>en-us</language>
    <copyright>James Kovacs</copyright>
    <lastBuildDate>Tue, 26 May 2009 01:17:39 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>jkovacs@post.harvard.edu</managingEditor>
    <webMaster>jkovacs@post.harvard.edu</webMaster>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.devteach.com" target="_blank">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="DevTeach.com" border="0" alt="DevTeach.com" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/Top10AgileReasonstoAttendDevTeachVancouv_1048A/image_7944ed22-dddc-427f-a20d-a5874b64a6f9.png" width="300" height="250" />
          </a>
          <a href="http://www.devteach.com/" target="_blank">DevTeach</a> is
my favourite conference of the year and it’s happening again in Vancouver on June
8-12, 2009. No, it’s not my favourite conference because I’m one of the <a href="http://www.devteach.com/TechChair.aspx" target="_blank">Tech
Chairs</a>. It’s the other way around. I’m a Tech Chair because DevTeach is my favourite
conference. For the curious, Tech Chairs do not receive an honorarium or other compensation.
We do it because we love DevTeach and the community it brings together. Here are my
Top 10 Reasons to attend DevTeach Vancouver.
</p>
        <ol>
          <li>
It’s got a dedicated <a href="http://www.devteach.com/Session.aspx#122" target="_blank">Agile
Track</a>, baby! 18 sessions of agile goodness.</li>
          <li>
The Agile Track has more TLAs than any other track, including TDD, BDD, DDD, ORM,
IoC, and DSL!</li>
          <li>
Internationally renowned speakers, including Oren Eini (aka Ayende Rahien), David
Laribee, Michael Stiefel, Greg Young, Eric Renaud, Francois Tanguay, Claudio Lassala,
Hamilton Verissimo, Owen Rogers, Donald Belcham, and me. And that’s just the Agile
Track!</li>
          <li>
More IoC than you can shake a stick at with sessions by Oren Eini (current maintainer
of Castle Windsor), Hamilton Verissimo (creator of Castle Windsor and Microsoft PM
on MEF), and me. (I feel so outclassed in that line-up.)</li>
          <li>
1-day pre-conference session on <a href="http://www.devteach.com/PreConference.aspx#PreAgile" target="_blank">Agile
Development with IoC and ORM</a> with James Kovacs and Oren Eini. <a href="http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,10,4,94" target="_blank">Register
now!</a> ($399 CAD) Spend an intense day of coding with Oren and me learning about
how to build applications with Fluent NHibernate, Windsor, AutoMapper, and other agile-friendly
technologies.</li>
          <li>
            <a href="http://altnetconfcanada.com/" target="_blank">ALT.NET Canada</a> happening
June 12-14, 2009 at the same hotel. <a href="http://altnetconfcanada.com/registration/index.castle" target="_blank">Register
now!</a> (FREE!) (DevTeach is a major sponsor of ALT.NET Canada. Thank you, JR!)</li>
          <li>
.NET Rocks will be in the house again! Carl and Richard always provide lively discussion
and entertainment. DevTeach Vancouver will be no different with a <a href="http://www.devteach.com/BonusSession.aspx" target="_blank">.NET
Rocks-hosted Visual Studio 2010 Beta 1 InstallFest</a>.</li>
          <li>
At DevTeach, speakers don’t hide in the Speakers Lounge. You get to meet them face-to-face
and ask them questions.</li>
          <li>
DevTeach Education Stimulus Package! In difficult times, DevTeach trying to help out
by providing three registrations for the price of two. You can find details on the <a href="http://www.devteach.com/Register.aspx" target="_blank">Registration
page</a>.</li>
          <li>
DevTeach is a conference where speakers go to learn. Unlike other conferences, speakers
actually go to each other’s sessions and participate. This results in lively discussions
that are fun for speakers and attendees alike.</li>
        </ol>
        <p>
Hope to see you at <a href="http://www.devteach.com/Register.aspx" target="_blank">DevTeach
Vancouver</a>! Don’t forget to register for <a href="http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,10,4,94" target="_blank">the
day-long Oren/James extravaganza of agile fun</a>. Or <a href="http://altnetconfcanada.com/registration/index.castle" target="_blank">ALT.NET
Canada</a>!
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37" />
      </body>
      <title>Top 10 Reasons to Attend DevTeach Vancouver</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37</guid>
      <link>http://www.jameskovacs.com/blog/Top10ReasonsToAttendDevTeachVancouver.aspx</link>
      <pubDate>Tue, 26 May 2009 01:17:39 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.devteach.com" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="DevTeach.com" border="0" alt="DevTeach.com" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/Top10AgileReasonstoAttendDevTeachVancouv_1048A/image_7944ed22-dddc-427f-a20d-a5874b64a6f9.png" width="300" height="250"&gt;&lt;/a&gt; &lt;a href="http://www.devteach.com/" target="_blank"&gt;DevTeach&lt;/a&gt; is
my favourite conference of the year and it’s happening again in Vancouver on June
8-12, 2009. No, it’s not my favourite conference because I’m one of the &lt;a href="http://www.devteach.com/TechChair.aspx" target="_blank"&gt;Tech
Chairs&lt;/a&gt;. It’s the other way around. I’m a Tech Chair because DevTeach is my favourite
conference. For the curious, Tech Chairs do not receive an honorarium or other compensation.
We do it because we love DevTeach and the community it brings together. Here are my
Top 10 Reasons to attend DevTeach Vancouver.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
It’s got a dedicated &lt;a href="http://www.devteach.com/Session.aspx#122" target="_blank"&gt;Agile
Track&lt;/a&gt;, baby! 18 sessions of agile goodness.&lt;/li&gt;
&lt;li&gt;
The Agile Track has more TLAs than any other track, including TDD, BDD, DDD, ORM,
IoC, and DSL!&lt;/li&gt;
&lt;li&gt;
Internationally renowned speakers, including Oren Eini (aka Ayende Rahien), David
Laribee, Michael Stiefel, Greg Young, Eric Renaud, Francois Tanguay, Claudio Lassala,
Hamilton Verissimo, Owen Rogers, Donald Belcham, and me. And that’s just the Agile
Track!&lt;/li&gt;
&lt;li&gt;
More IoC than you can shake a stick at with sessions by Oren Eini (current maintainer
of Castle Windsor), Hamilton Verissimo (creator of Castle Windsor and Microsoft PM
on MEF), and me. (I feel so outclassed in that line-up.)&lt;/li&gt;
&lt;li&gt;
1-day pre-conference session on &lt;a href="http://www.devteach.com/PreConference.aspx#PreAgile" target="_blank"&gt;Agile
Development with IoC and ORM&lt;/a&gt; with James Kovacs and Oren Eini. &lt;a href="http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,10,4,94" target="_blank"&gt;Register
now!&lt;/a&gt; ($399 CAD) Spend an intense day of coding with Oren and me learning about
how to build applications with Fluent NHibernate, Windsor, AutoMapper, and other agile-friendly
technologies.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://altnetconfcanada.com/" target="_blank"&gt;ALT.NET Canada&lt;/a&gt; happening
June 12-14, 2009 at the same hotel. &lt;a href="http://altnetconfcanada.com/registration/index.castle" target="_blank"&gt;Register
now!&lt;/a&gt; (FREE!) (DevTeach is a major sponsor of ALT.NET Canada. Thank you, JR!)&lt;/li&gt;
&lt;li&gt;
.NET Rocks will be in the house again! Carl and Richard always provide lively discussion
and entertainment. DevTeach Vancouver will be no different with a &lt;a href="http://www.devteach.com/BonusSession.aspx" target="_blank"&gt;.NET
Rocks-hosted Visual Studio 2010 Beta 1 InstallFest&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
At DevTeach, speakers don’t hide in the Speakers Lounge. You get to meet them face-to-face
and ask them questions.&lt;/li&gt;
&lt;li&gt;
DevTeach Education Stimulus Package! In difficult times, DevTeach trying to help out
by providing three registrations for the price of two. You can find details on the &lt;a href="http://www.devteach.com/Register.aspx" target="_blank"&gt;Registration
page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
DevTeach is a conference where speakers go to learn. Unlike other conferences, speakers
actually go to each other’s sessions and participate. This results in lively discussions
that are fun for speakers and attendees alike.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Hope to see you at &lt;a href="http://www.devteach.com/Register.aspx" target="_blank"&gt;DevTeach
Vancouver&lt;/a&gt;! Don’t forget to register for &lt;a href="http://www.devteach.com/wconnect/wc.dll?FournierTransformation~1,10,4,94" target="_blank"&gt;the
day-long Oren/James extravaganza of agile fun&lt;/a&gt;. Or &lt;a href="http://altnetconfcanada.com/registration/index.castle" target="_blank"&gt;ALT.NET
Canada&lt;/a&gt;!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=3bba9be5-c2ba-4f30-8c6d-860f3b24fa37</comments>
      <category>Agile;Courses;Events</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=3a4af74f-fb35-4918-b971-0aa30b15118e</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=3a4af74f-fb35-4918-b971-0aa30b15118e</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=3a4af74f-fb35-4918-b971-0aa30b15118e</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3a4af74f-fb35-4918-b971-0aa30b15118e</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Sand Zen Garden" border="0" alt="Sand Zen Garden" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/Extre.NETMakeoverGettingYourHouseinOrder_13D4D/image_1f700c3e-00ce-41b2-9a5e-3d248cb3955a.png" width="300" height="199" /> A
few months back, <a href="http://www.jameskovacs.com/blog/MSDNMagazineSeriesFromWebDevToRIADev.aspx" target="_blank">I
announced</a> that I was doing a series of articles for MSDN Magazine on improving
a “classic” ASP.NET application with modern tooling and frameworks. As an application,
I chose <a href="http://www.screwturn.eu" target="_blank">ScrewTurn Wiki 3.0</a> to
use as my example throughout. The first article, <a href="http://msdn.microsoft.com/en-us/magazine/dd758790.aspx" target="_blank">Extreme
ASP.NET Makeover – Getting Your House in Order</a>, went live a few days ago. The
article is purposefully a different format for MSDN Magazine than “traditional” articles
in that it incorporates short screencasts where appropriate rather than just code
snippets and pictures. (Code snippets and pictures are included too, though!) I tried
to make the screencasts an integral part of the narrative where actually showing something
was easier than text, pictures, or code. I would love to hear your feedback on the
format and content.
</p>
        <p>
          <strong>Nitpickers Corner:</strong> In the series, I use MSBuild as the build tool.
Yes, I wrote my own PowerShell-based build tool, <a href="http://code.google.com/p/psake/" target="_blank">psake</a>.
Yes, I use NAnt on many of my projects for clients. (They’re already using NAnt and
PowerShell is a new skillset for them.) So why MSBuild for the series? Because it
is installed by default with .NET 2.0 and above. Not my first choice, but a pragmatic
choice for a series focused on improving what you have.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=3a4af74f-fb35-4918-b971-0aa30b15118e" />
      </body>
      <title>Extreme ASP.NET Makeover &amp;ndash; Getting Your House in Order</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=3a4af74f-fb35-4918-b971-0aa30b15118e</guid>
      <link>http://www.jameskovacs.com/blog/ExtremeASPNETMakeoverNdashGettingYourHouseInOrder.aspx</link>
      <pubDate>Mon, 11 May 2009 05:13:12 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Sand Zen Garden" border="0" alt="Sand Zen Garden" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/Extre.NETMakeoverGettingYourHouseinOrder_13D4D/image_1f700c3e-00ce-41b2-9a5e-3d248cb3955a.png" width="300" height="199"&gt; A
few months back, &lt;a href="http://www.jameskovacs.com/blog/MSDNMagazineSeriesFromWebDevToRIADev.aspx" target="_blank"&gt;I
announced&lt;/a&gt; that I was doing a series of articles for MSDN Magazine on improving
a “classic” ASP.NET application with modern tooling and frameworks. As an application,
I chose &lt;a href="http://www.screwturn.eu" target="_blank"&gt;ScrewTurn Wiki 3.0&lt;/a&gt; to
use as my example throughout. The first article, &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd758790.aspx" target="_blank"&gt;Extreme
ASP.NET Makeover – Getting Your House in Order&lt;/a&gt;, went live a few days ago. The
article is purposefully a different format for MSDN Magazine than “traditional” articles
in that it incorporates short screencasts where appropriate rather than just code
snippets and pictures. (Code snippets and pictures are included too, though!) I tried
to make the screencasts an integral part of the narrative where actually showing something
was easier than text, pictures, or code. I would love to hear your feedback on the
format and content.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Nitpickers Corner:&lt;/strong&gt; In the series, I use MSBuild as the build tool.
Yes, I wrote my own PowerShell-based build tool, &lt;a href="http://code.google.com/p/psake/" target="_blank"&gt;psake&lt;/a&gt;.
Yes, I use NAnt on many of my projects for clients. (They’re already using NAnt and
PowerShell is a new skillset for them.) So why MSBuild for the series? Because it
is installed by default with .NET 2.0 and above. Not my first choice, but a pragmatic
choice for a series focused on improving what you have.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=3a4af74f-fb35-4918-b971-0aa30b15118e" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=3a4af74f-fb35-4918-b971-0aa30b15118e</comments>
      <category>.NET General;Agile;ASP.NET;Screencast;Software Design</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="psake" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="86" alt="psake" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/psakeatVANWrapup_F8B2/psake_77658c12-2188-4647-b6d8-ecc14f5d5e75.png" width="200" align="right" border="0" /> Last
night I gave a presentation on psake and PowerShell to the <a href="http://groups.google.com/group/virtualaltnet" target="_blank">Virtual
ALT.NET (VAN) group</a>. I had a fun time demonstrating how to write a psake build
script, examining some psake internals, discussing the current state of the project,
and generally making a fool of myself by showing how much of a PowerShell noob I really
am. I believe that the presentation was recorded and will be posted online in the
next few days. Then you too can see me fumbling around trying to remember PowerShell
syntax. I consider myself a professional developer when it comes to many areas, but
in terms of PowerShell I am a hack who learns just enough to get the job done.
</p>
        <p>
As promised, here are the links from the meeting…
</p>
        <h3>psake Resources
</h3>
        <p>
          <a href="http://code.google.com/p/psake/" target="_blank">Project Homepage</a>
        </p>
        <p>
          <a href="http://groups.google.com/group/psake-users" target="_blank">Users mailing
list</a>
        </p>
        <p>
          <a href="http://groups.google.com/group/psake-dev" target="_blank">Dev mailing list</a>
        </p>
        <h3>PowerShell Resources
</h3>
        <p>
          <a href="http://tinyurl.com/ceydkd" target="_blank">PowerShell Cheat Sheet</a>
          <br />
  
</p>
        <p>
          <a href="http://www.manning.com/payette/" target="_blank">Windows PowerShell in Action</a> (book)<br />
  
</p>
        <p>
          <a href="http://blogs.msdn.com/powershell/" target="_blank">Windows PowerShell Team
Blog</a>
        </p>
        <p>
        </p>
        <p>
On Twitter, I have a search for #psake. If you have a question, comment, or quibble
about psake, you can use the #psake hashtag or @JamesKovacs to get my attention.
</p>
        <p>
P.S. A number of people expressed interest in some of my dev-related PowerShell scripts,
such as removing unversioned files from a SVN working copy, updating all SVN working
copies off a common directory, cleaning a solution, … I’ll be putting them in a publicly
accessible location soon and blogging about those scripts. So please be patient and
don’t adjust your sets.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e" />
      </body>
      <title>psake at VAN Wrap-up</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e</guid>
      <link>http://www.jameskovacs.com/blog/psakeAtVANWrapup.aspx</link>
      <pubDate>Fri, 10 Apr 2009 00:04:51 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="psake" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="86" alt="psake" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/psakeatVANWrapup_F8B2/psake_77658c12-2188-4647-b6d8-ecc14f5d5e75.png" width="200" align="right" border="0"&gt; Last
night I gave a presentation on psake and PowerShell to the &lt;a href="http://groups.google.com/group/virtualaltnet" target="_blank"&gt;Virtual
ALT.NET (VAN) group&lt;/a&gt;. I had a fun time demonstrating how to write a psake build
script, examining some psake internals, discussing the current state of the project,
and generally making a fool of myself by showing how much of a PowerShell noob I really
am. I believe that the presentation was recorded and will be posted online in the
next few days. Then you too can see me fumbling around trying to remember PowerShell
syntax. I consider myself a professional developer when it comes to many areas, but
in terms of PowerShell I am a hack who learns just enough to get the job done.
&lt;/p&gt;
&lt;p&gt;
As promised, here are the links from the meeting…
&lt;/p&gt;
&lt;h3&gt;psake Resources
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://code.google.com/p/psake/" target="_blank"&gt;Project Homepage&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://groups.google.com/group/psake-users" target="_blank"&gt;Users mailing
list&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://groups.google.com/group/psake-dev" target="_blank"&gt;Dev mailing list&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;PowerShell Resources
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://tinyurl.com/ceydkd" target="_blank"&gt;PowerShell Cheat Sheet&lt;/a&gt;
&lt;br&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://www.manning.com/payette/" target="_blank"&gt;Windows PowerShell in Action&lt;/a&gt; (book)&lt;br&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/powershell/" target="_blank"&gt;Windows PowerShell Team
Blog&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
On Twitter, I have a search for #psake. If you have a question, comment, or quibble
about psake, you can use the #psake hashtag or @JamesKovacs to get my attention.
&lt;/p&gt;
&lt;p&gt;
P.S. A number of people expressed interest in some of my dev-related PowerShell scripts,
such as removing unversioned files from a SVN working copy, updating all SVN working
copies off a common directory, cleaning a solution, … I’ll be putting them in a publicly
accessible location soon and blogging about those scripts. So please be patient and
don’t adjust your sets.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=41c73d5b-3419-4b52-a0fc-d38c96f2bd8e</comments>
      <category>PowerShell;Presentations</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.flickr.com/photos/lou/1352717149/" target="_blank">
            <img title="Parthenon Under Construction" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="266" alt="Parthenon Under Construction" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/FromWebDevtoRIADev_D9C1/image_c6f73465-725c-4743-a182-d48b6a46f0cd.png" width="400" align="right" border="0" />
          </a>I
don’t have to remind everyone that we’re in the middle of a world-wide economic <strike>depression</strike> downturn.
When the economy is good, it is hard enough to convince your boss to re-build an application
from scratch. When the economy is bad, it is bloody near impossible. In the coming
months (and potentially years), I expect that as developers we’re going to be seeing
more and more <a href="http://www.manning.com/baley/">brownfield projects</a>, rather
than greenfield ones. We’re going to see more push for evolutionary development of
applications rather than wholesale replacement. We will be called upon to improve
existing codebases, implement new features, and take these projects in initially unforeseen
directions. We will have to learn how to be <em><a href="http://www.amazon.com/gp/product/0131177052?ie=UTF8&amp;tag=jamkovweb-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=0131177052">Working
Effectively with Legacy Code</a></em>. (Took some effort to coerce the title of Michael
Feathers’ excellent book into that last sentence.) A lot of companies have tremendous
investment in existing “classic” ASP.NET websites, but there is a desire to evolve
these sites rather than replace them, especially given these tough economic times. <a href="http://codebetter.com/blogs/howard.dierking">Howard
Dierking</a>, editor of MSDN Magazine, has asked me to write a 9-week series entitled <a href="http://blogs.msdn.com/msdnmagazine/archive/2009/03/18/9489211.aspx"><em>From
Web Dev to RIA Dev</em></a> where we will explore refactoring an existing “classic”
ASP.NET site. We want to improve an existing ASP.NET using new technologies, such
as AJAX, jQuery, and ASP.NET MVC. We want to show that you can adopt better practices,
such as continuous integration, web testing (e.g. WatiN, WatiR, Selenium), integration
testing, separation of concerns, layering, and more.
</p>
        <p>
So I have two questions for you, Dear Reader…
</p>
        <ol>
          <li>
Can you think of a representative “classic” ASP.NET website (or websites) for the
project?</li>
          <li>
What topics would you like to see covered?</li>
        </ol>
        <p>
I should clarify what I mean…
</p>
        <h5>“Classic” ASP.NET Applications
</h5>
        <p>
I’m currently considering PetShop, IBuySpy, DasBlog, SubText, and ScrewTurn Wiki.
I’m not looking for one riff with bad practices. Just an ASP.NET project in need of
some TLC – one that doesn’t have a decent build script, isn’t under CI, a bit shy
on the testing, little to no AJAX, etc. The code should be typical of what you would
see in a typical ASP.NET application. (For that reason, I am probably going to discount
IBuySpy as it is built using a funky webpart-like framework, which is not typical
of most ASP.NET applications.) Some of the ASP.NET applications that I just mentioned
don’t exactly qualify because they do have build scripts, tests, and other features
that I would like to demonstrate. I will get permission from the project owner(s)
before embarking on this quest and plan to contribute any code back to the project.
Needless to say that the project must have source available to be considered for this
article series. So please make some suggestions!
</p>
        <h5>Topics
</h5>
        <p>
I have a lot of ideas of technologies and techniques to explore including proper XHTML/CSS
layout, jQuery, QUnit, AJAX, HTTP Modules/Handlers, build scripts, continuous integration
(CI), ASP.NET MVC, web testing (probably WatiN or Selenium), refactoring to separate
domain logic from codebehind/sprocs, … I will cover one major topic per week over
the 9-week series. So I’ve got lots of room for cool ideas. What would you like to
see? What do you think is the biggest bang for your buck in terms of improving an
existing ASP.NET application?
</p>
        <p>
Depending on the topics covered (based on your feedback here), I might use one site
for the entire series or different sites to cover each topic. It would add some continuity
to the series to use a single site over the 9 weeks, but after a brief inspection
of the codebases mentioned above, I am having my doubts about finding a single representative
site. We’ll have to see. Please leave your suggestions in the comments below. Thanks
in advance!
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86" />
      </body>
      <title>MSDN Magazine Series: From Web Dev to RIA Dev</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86</guid>
      <link>http://www.jameskovacs.com/blog/MSDNMagazineSeriesFromWebDevToRIADev.aspx</link>
      <pubDate>Fri, 20 Mar 2009 23:25:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.flickr.com/photos/lou/1352717149/" target="_blank"&gt;&lt;img title="Parthenon Under Construction" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="266" alt="Parthenon Under Construction" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/FromWebDevtoRIADev_D9C1/image_c6f73465-725c-4743-a182-d48b6a46f0cd.png" width="400" align="right" border="0"&gt;&lt;/a&gt;I
don’t have to remind everyone that we’re in the middle of a world-wide economic &lt;strike&gt;depression&lt;/strike&gt; downturn.
When the economy is good, it is hard enough to convince your boss to re-build an application
from scratch. When the economy is bad, it is bloody near impossible. In the coming
months (and potentially years), I expect that as developers we’re going to be seeing
more and more &lt;a href="http://www.manning.com/baley/"&gt;brownfield projects&lt;/a&gt;, rather
than greenfield ones. We’re going to see more push for evolutionary development of
applications rather than wholesale replacement. We will be called upon to improve
existing codebases, implement new features, and take these projects in initially unforeseen
directions. We will have to learn how to be &lt;em&gt;&lt;a href="http://www.amazon.com/gp/product/0131177052?ie=UTF8&amp;amp;tag=jamkovweb-20&amp;amp;link_code=as3&amp;amp;camp=211189&amp;amp;creative=373489&amp;amp;creativeASIN=0131177052"&gt;Working
Effectively with Legacy Code&lt;/a&gt;&lt;/em&gt;. (Took some effort to coerce the title of Michael
Feathers’ excellent book into that last sentence.) A lot of companies have tremendous
investment in existing “classic” ASP.NET websites, but there is a desire to evolve
these sites rather than replace them, especially given these tough economic times. &lt;a href="http://codebetter.com/blogs/howard.dierking"&gt;Howard
Dierking&lt;/a&gt;, editor of MSDN Magazine, has asked me to write a 9-week series entitled &lt;a href="http://blogs.msdn.com/msdnmagazine/archive/2009/03/18/9489211.aspx"&gt;&lt;em&gt;From
Web Dev to RIA Dev&lt;/em&gt;&lt;/a&gt; where we will explore refactoring an existing “classic”
ASP.NET site. We want to improve an existing ASP.NET using new technologies, such
as AJAX, jQuery, and ASP.NET MVC. We want to show that you can adopt better practices,
such as continuous integration, web testing (e.g. WatiN, WatiR, Selenium), integration
testing, separation of concerns, layering, and more.
&lt;/p&gt;
&lt;p&gt;
So I have two questions for you, Dear Reader…
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Can you think of a representative “classic” ASP.NET website (or websites) for the
project?&lt;/li&gt;
&lt;li&gt;
What topics would you like to see covered?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I should clarify what I mean…
&lt;/p&gt;
&lt;h5&gt;“Classic” ASP.NET Applications
&lt;/h5&gt;
&lt;p&gt;
I’m currently considering PetShop, IBuySpy, DasBlog, SubText, and ScrewTurn Wiki.
I’m not looking for one riff with bad practices. Just an ASP.NET project in need of
some TLC – one that doesn’t have a decent build script, isn’t under CI, a bit shy
on the testing, little to no AJAX, etc. The code should be typical of what you would
see in a typical ASP.NET application. (For that reason, I am probably going to discount
IBuySpy as it is built using a funky webpart-like framework, which is not typical
of most ASP.NET applications.) Some of the ASP.NET applications that I just mentioned
don’t exactly qualify because they do have build scripts, tests, and other features
that I would like to demonstrate. I will get permission from the project owner(s)
before embarking on this quest and plan to contribute any code back to the project.
Needless to say that the project must have source available to be considered for this
article series. So please make some suggestions!
&lt;/p&gt;
&lt;h5&gt;Topics
&lt;/h5&gt;
&lt;p&gt;
I have a lot of ideas of technologies and techniques to explore including proper XHTML/CSS
layout, jQuery, QUnit, AJAX, HTTP Modules/Handlers, build scripts, continuous integration
(CI), ASP.NET MVC, web testing (probably WatiN or Selenium), refactoring to separate
domain logic from codebehind/sprocs, … I will cover one major topic per week over
the 9-week series. So I’ve got lots of room for cool ideas. What would you like to
see? What do you think is the biggest bang for your buck in terms of improving an
existing ASP.NET application?
&lt;/p&gt;
&lt;p&gt;
Depending on the topics covered (based on your feedback here), I might use one site
for the entire series or different sites to cover each topic. It would add some continuity
to the series to use a single site over the 9 weeks, but after a brief inspection
of the codebases mentioned above, I am having my doubts about finding a single representative
site. We’ll have to see. Please leave your suggestions in the comments below. Thanks
in advance!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=8ce8314c-9c78-4c64-bc8b-f1881f6fcb86</comments>
      <category>.NET General;ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=b1d703ce-05d8-4658-aaee-df3e8be17940</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=b1d703ce-05d8-4658-aaee-df3e8be17940</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=b1d703ce-05d8-4658-aaee-df3e8be17940</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b1d703ce-05d8-4658-aaee-df3e8be17940</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been having fun writing about my adventures in PowerShell. I would like to thank
everyone for their encouragement and feedback. Something that I haven’t explicitly
stated – which should go without saying as this is a blog – is that I am not a PowerShell
expert. This is one man’s journey learning about PowerShell. I consider myself an
expert on C#, .NET, and many other things, but as for PowerShell, I am a hacker. I
learn enough to get the job done.
</p>
        <p>
Yes, I wrote <a href="http://code.google.com/p/psake/">psake</a>, which is a cool
little PowerShell-based build tool, if I do say so myself. I wrote it in part to learn
more about PowerShell and what was possible. (I surprised myself that I was able to
write a task-based build system in a few hours with about 100 lines of PowerShell,
ignoring comments.)
</p>
        <p>
If you’re looking for PowerShell gospel, I would recommend checking out the <a href="http://blogs.msdn.com/powershell/default.aspx">Windows
PowerShell Blog</a> (the blog of Jeffrey Snover and the rest of the PowerShell team), <a href="http://www.amazon.com/gp/product/1932394907?ie=UTF8&amp;tag=jamkovweb-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1932394907"><em>Windows
PowerShell in Action</em></a> by Bruce Payette, the PowerScripting Podcast, or any
of the myriad PowerShell MVP blogs. They are the experts. I’m just a hacker having
fun.
</p>
        <p>
With that disclaimer, I hope that by documenting my PowerShell learnings in public,
I will help other developers learn PowerShell. I know that I am learning great things
about PowerShell from my readers. In <a href="http://www.jameskovacs.com/blog/GettingStartedWithPowerShellDeveloperEdition.aspx">Getting
Started with PowerShell - Developer Edition</a>, I lamented the lack of grep. My friend, <a href="http://www.tavaresstudios.com/">Chris
Tavares</a> – known for his work on Unity and ASP.NET MVC - pointed out that Select-String
can perform similar functions. Awesome! Then in <a href="http://www.jameskovacs.com/blog/PowerShellProcessesAndPiping.aspx">PowerShell,
Processes, and Piping</a>, Jeffrey Snover himself pointed out that PowerShell supports
KB, MB, and GB – with TB and PB in v2 – so that you can write:
</p>
        <p>
get-process | where { $_.PrivateMemorySize –gt 200MB }
</p>
        <p>
rather than having to translate 200MB into 200*1024*1024 as I originally did. Fantastic!
</p>
        <p>
In <a href="http://www.jameskovacs.com/blog/WritingReusableScriptsWithPowerShell.aspx">Writing
Re-usable Scripts with PowerShell</a>, <a href="http://wekempf.spaces.live.com/">wekempf</a>, <a href="http://www.pseale.com/blog/">Peter</a>,
and <a href="http://www.josheinstein.com/">Josh</a> discussed the merits of setting
your execution policy to Unrestricted. I corrected the post to use RemoteSigned, which
means that downloaded PowerShell scripts have to be unblocked before running, but
local scripts can run without requiring signing/re-signing. Thanks, guys. I agree
that RemoteSigned is a better option.
</p>
        <p>
Let’s talk security for a second. I am careful about security. I run as a normal user
on Vista and have a separate admin account. When setting up <a href="http://teamcity.codebetter.com">teamcity.codebetter.com</a>,
the build agent runs under a least privilege account, which is why we can’t run NCover
on the build server yet. (NCover currently requires admin privs, though Gnoso is working
on fixing that in short order.) (Imagine if we did run builds as an Administrator
or Local System. Someone could write a unit test that added a new user with admin
privs to the box, log in remotely and start installing bots, malware, and other evil.)
So I tend to be careful about security.
</p>
        <p>
Now for my real question… What is the threat model for PowerShell that requires script
signing? Maybe I’m being really dense here, but I don’t get it. Let’s say I want to
do something really evil like formatting your hard drive. I create a PowerShell script
with “format c:” in it, exploit a security vulnerability to drop it onto your box,
and exploit another security vulnerability to launch PowerShell to execute the script.
(Or I name it the same as a common script, but earlier in your search path, and wait
for you to execute it.) But you’ve been anal-retentive about security and only allow
signed scripts. So the script won’t execute. Damn! Foiled again! But wait! Let me
just rename it from foo.ps1 to foo.cmd or foo.bat and execute it from cmd.exe. If
I can execute code on your computer, there are easier ways for me to do bad things
than writing PowerShell scripts. Given that we can’t require signing for *.cmd and
*.bat files as this would horribly break legacy compatibility, what is the advantage
of requiring PowerShell scripts to be signed by default? Dear readers, please enlighten
me!
</p>
        <p>
          <strong>UPDATE:</strong>
          <a href="http://huddledmasses.org/">Joel “Jaykul” Bennett</a> provided
a good explanation in the comments. I would recommend reading:
</p>
        <p>
          <a title="http://blogs.msdn.com/powershell/archive/2008/09/30/powershell-s-security-guiding-principles.aspx" href="http://blogs.msdn.com/powershell/archive/2008/09/30/powershell-s-security-guiding-principles.aspx">http://blogs.msdn.com/powershell/archive/2008/09/30/powershell-s-security-guiding-principles.aspx</a>
        </p>
        <p>
as it exlains the PowerShell Team’s design decision. The intention wasn’t to force
everyone to sign scripts, but to disable script execution for most users (as they
won’t use PowerShell), but allow PowerShell users to opt into RemoteSigned or Unrestricted
as they so choose. Script signing is meant for administrators to set group policy
and use signed scripts for administration (as one example use case of script signing).
</p>
        <p>
Thanks again, Joel! That was faster than sifting through the myriad posts on script
signing trying to find the reasoning behind it. Once again, the advantages of learning
as a community!
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=b1d703ce-05d8-4658-aaee-df3e8be17940" />
      </body>
      <title>Confusion about PowerShell Script Signing</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=b1d703ce-05d8-4658-aaee-df3e8be17940</guid>
      <link>http://www.jameskovacs.com/blog/ConfusionAboutPowerShellScriptSigning.aspx</link>
      <pubDate>Tue, 17 Mar 2009 18:56:19 GMT</pubDate>
      <description>&lt;p&gt;
I’ve been having fun writing about my adventures in PowerShell. I would like to thank
everyone for their encouragement and feedback. Something that I haven’t explicitly
stated – which should go without saying as this is a blog – is that I am not a PowerShell
expert. This is one man’s journey learning about PowerShell. I consider myself an
expert on C#, .NET, and many other things, but as for PowerShell, I am a hacker. I
learn enough to get the job done.
&lt;/p&gt;
&lt;p&gt;
Yes, I wrote &lt;a href="http://code.google.com/p/psake/"&gt;psake&lt;/a&gt;, which is a cool
little PowerShell-based build tool, if I do say so myself. I wrote it in part to learn
more about PowerShell and what was possible. (I surprised myself that I was able to
write a task-based build system in a few hours with about 100 lines of PowerShell,
ignoring comments.)
&lt;/p&gt;
&lt;p&gt;
If you’re looking for PowerShell gospel, I would recommend checking out the &lt;a href="http://blogs.msdn.com/powershell/default.aspx"&gt;Windows
PowerShell Blog&lt;/a&gt; (the blog of Jeffrey Snover and the rest of the PowerShell team), &lt;a href="http://www.amazon.com/gp/product/1932394907?ie=UTF8&amp;amp;tag=jamkovweb-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1932394907"&gt;&lt;em&gt;Windows
PowerShell in Action&lt;/em&gt;&lt;/a&gt; by Bruce Payette, the PowerScripting Podcast, or any
of the myriad PowerShell MVP blogs. They are the experts. I’m just a hacker having
fun.
&lt;/p&gt;
&lt;p&gt;
With that disclaimer, I hope that by documenting my PowerShell learnings in public,
I will help other developers learn PowerShell. I know that I am learning great things
about PowerShell from my readers. In &lt;a href="http://www.jameskovacs.com/blog/GettingStartedWithPowerShellDeveloperEdition.aspx"&gt;Getting
Started with PowerShell - Developer Edition&lt;/a&gt;, I lamented the lack of grep. My friend, &lt;a href="http://www.tavaresstudios.com/"&gt;Chris
Tavares&lt;/a&gt; – known for his work on Unity and ASP.NET MVC - pointed out that Select-String
can perform similar functions. Awesome! Then in &lt;a href="http://www.jameskovacs.com/blog/PowerShellProcessesAndPiping.aspx"&gt;PowerShell,
Processes, and Piping&lt;/a&gt;, Jeffrey Snover himself pointed out that PowerShell supports
KB, MB, and GB – with TB and PB in v2 – so that you can write:
&lt;/p&gt;
&lt;p&gt;
get-process | where { $_.PrivateMemorySize –gt 200MB }
&lt;/p&gt;
&lt;p&gt;
rather than having to translate 200MB into 200*1024*1024 as I originally did. Fantastic!
&lt;/p&gt;
&lt;p&gt;
In &lt;a href="http://www.jameskovacs.com/blog/WritingReusableScriptsWithPowerShell.aspx"&gt;Writing
Re-usable Scripts with PowerShell&lt;/a&gt;, &lt;a href="http://wekempf.spaces.live.com/"&gt;wekempf&lt;/a&gt;, &lt;a href="http://www.pseale.com/blog/"&gt;Peter&lt;/a&gt;,
and &lt;a href="http://www.josheinstein.com/"&gt;Josh&lt;/a&gt; discussed the merits of setting
your execution policy to Unrestricted. I corrected the post to use RemoteSigned, which
means that downloaded PowerShell scripts have to be unblocked before running, but
local scripts can run without requiring signing/re-signing. Thanks, guys. I agree
that RemoteSigned is a better option.
&lt;/p&gt;
&lt;p&gt;
Let’s talk security for a second. I am careful about security. I run as a normal user
on Vista and have a separate admin account. When setting up &lt;a href="http://teamcity.codebetter.com"&gt;teamcity.codebetter.com&lt;/a&gt;,
the build agent runs under a least privilege account, which is why we can’t run NCover
on the build server yet. (NCover currently requires admin privs, though Gnoso is working
on fixing that in short order.) (Imagine if we did run builds as an Administrator
or Local System. Someone could write a unit test that added a new user with admin
privs to the box, log in remotely and start installing bots, malware, and other evil.)
So I tend to be careful about security.
&lt;/p&gt;
&lt;p&gt;
Now for my real question… What is the threat model for PowerShell that requires script
signing? Maybe I’m being really dense here, but I don’t get it. Let’s say I want to
do something really evil like formatting your hard drive. I create a PowerShell script
with “format c:” in it, exploit a security vulnerability to drop it onto your box,
and exploit another security vulnerability to launch PowerShell to execute the script.
(Or I name it the same as a common script, but earlier in your search path, and wait
for you to execute it.) But you’ve been anal-retentive about security and only allow
signed scripts. So the script won’t execute. Damn! Foiled again! But wait! Let me
just rename it from foo.ps1 to foo.cmd or foo.bat and execute it from cmd.exe. If
I can execute code on your computer, there are easier ways for me to do bad things
than writing PowerShell scripts. Given that we can’t require signing for *.cmd and
*.bat files as this would horribly break legacy compatibility, what is the advantage
of requiring PowerShell scripts to be signed by default? Dear readers, please enlighten
me!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;UPDATE:&lt;/strong&gt; &lt;a href="http://huddledmasses.org/"&gt;Joel “Jaykul” Bennett&lt;/a&gt; provided
a good explanation in the comments. I would recommend reading:
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://blogs.msdn.com/powershell/archive/2008/09/30/powershell-s-security-guiding-principles.aspx" href="http://blogs.msdn.com/powershell/archive/2008/09/30/powershell-s-security-guiding-principles.aspx"&gt;http://blogs.msdn.com/powershell/archive/2008/09/30/powershell-s-security-guiding-principles.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
as it exlains the PowerShell Team’s design decision. The intention wasn’t to force
everyone to sign scripts, but to disable script execution for most users (as they
won’t use PowerShell), but allow PowerShell users to opt into RemoteSigned or Unrestricted
as they so choose. Script signing is meant for administrators to set group policy
and use signed scripts for administration (as one example use case of script signing).
&lt;/p&gt;
&lt;p&gt;
Thanks again, Joel! That was faster than sifting through the myriad posts on script
signing trying to find the reasoning behind it. Once again, the advantages of learning
as a community!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=b1d703ce-05d8-4658-aaee-df3e8be17940" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=b1d703ce-05d8-4658-aaee-df3e8be17940</comments>
      <category>PowerShell</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=47809c75-07b4-4982-a9a5-4d2de40edb49</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=47809c75-07b4-4982-a9a5-4d2de40edb49</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=47809c75-07b4-4982-a9a5-4d2de40edb49</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=47809c75-07b4-4982-a9a5-4d2de40edb49</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Continuing on from <a href="http://www.jameskovacs.com/blog/PowerShellProcessesAndPiping.aspx">last
time</a>, I will now talk about writing re-usable scripts in PowerShell. Any command
that we have executed at PowerShell command line can be dropped into a script file.
I have lots of little PowerShell scripts for common tasks sitting in c:\Utilities\Scripts,
which I include in my path. Let’s say that I want to stop all running copies of Cassini
(aka the Visual Studio Web Development Server aka WebDev.WebServer.exe).
</p>
        <p>
Stop-Process -name WebDev.WebServer.exe -ErrorAction SilentlyContinue
</p>
        <p>
This will terminate all running copies of the above-named process. ErrorAction is
a common parameter for all PowerShell commands that tells PowerShell to ignore failures.
(By default, Stop-Process would fail if no processes with that name were found.)
</p>
        <p>
We’ve got our command. Now we want to turn it into a script so that we don’t have
to type it every time. Simply create a new text file with the above command text called
“Stop-Cassini.ps1” on your desktop using the text editor of your choice. (The script
can be in any directory, but we’ll put it on our desktop to start.) Let’s execute
the script by typing the following at the PowerShell prompt:
</p>
        <p>
Stop-Cassini
</p>
        <p>
          <img title="Current dirctory not in search path by default" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="153" alt="Current dirctory not in search path by default" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_5.png" width="1029" border="0" />
        </p>
        <p>
What just happened? Why can’t PowerShell find my script? By default, PowerShell doesn’t
include the current directory in its search path, unlike cmd.exe. To run a script
from the current directory, type the following:
</p>
        <p>
.\Stop-Cassini
</p>
        <p>
Another option is to add the current directory to the search path by modifying Computer…
Properties… Advanced… Environment Variables… Path. Or you can modify it for the current
PowerShell session using:
</p>
        <p>
$env:Path += '.\;'
</p>
        <p>
($env: provides access to environment variables in PowerShell. Try $env:ComputerName,
$env:OS, $env:NUMBER_OF_PROCESSORS, etc.)
</p>
        <p>
You could also modify your PowerShell startup script, but we’ll talk about that in
a future instalment. Let’s run our script again:
</p>
        <p>
          <img title="ExecutionPolicy error" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="152" alt="ExecutionPolicy error" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_8.png" width="1029" border="0" />
        </p>
        <p>
No dice again. By default, PowerShell does not allow unsigned scripts to run. This
is a good policy on servers, but is a royal pain on your own machine. That means that
every time you create or edit a script, you have to sign it. This doesn’t promote
the use of quick scripts for simplifying development and administration tasks. So
I turn off the requirement for script signing by running the following command from
an elevated (aka Administrator) PowerShell prompt:
</p>
        <p>
          <strike>Set-ExecutionPolicy Unrestricted</strike>
        </p>
        <p>
Set-ExecutionPolicy RemoteSigned
</p>
        <p>
          <img title="Set-ExecutionPolicy succeeded" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="91" alt="Set-ExecutionPolicy succeeded" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_6d53deb0-11a4-4624-944f-7ecaf6919e50.png" width="1029" border="0" />
        </p>
        <p>
If this command fails with an access denied error:
</p>
        <p>
          <img title="Set-ExecutionPolicy failed" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="136" alt="Set-ExecutionPolicy failed" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_30df9cca-e3ce-4ad7-b30c-877eea9975c3.png" width="1029" border="0" />
        </p>
        <p>
then make sure that you launched a new PowerShell prompt via right-click Run as administrator…
</p>
        <p>
        </p>
        <p>
Third time is the charm…
</p>
        <p>
          <img title="Success!" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="99" alt="Success!" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_20001279-4b07-4f31-9967-9988d229f348.png" width="1029" border="0" />
        </p>
        <p>
We are now able to write and use re-usable scripts in PowerShell. In my next instalment,
we’ll start pulling apart some more complicated scripts that simplify common developer
tasks.
</p>
        <p>
UPDATE: As pointed out by Josh in the comments, setting your execution policy to RemoteSigned
(rather than Unrestricted) is a better idea. Downloaded scripts will require you to
unblock them (Right-click… Properties… Unblock or <a href="http://www.jameskovacs.com/blog/ZoneStripper10Released.aspx">ZoneStripper</a> if
you have a lot) before execution. Thanks for the correction.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=47809c75-07b4-4982-a9a5-4d2de40edb49" />
      </body>
      <title>Writing Re-usable Scripts with PowerShell</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=47809c75-07b4-4982-a9a5-4d2de40edb49</guid>
      <link>http://www.jameskovacs.com/blog/WritingReusableScriptsWithPowerShell.aspx</link>
      <pubDate>Mon, 16 Mar 2009 03:34:53 GMT</pubDate>
      <description>&lt;p&gt;
Continuing on from &lt;a href="http://www.jameskovacs.com/blog/PowerShellProcessesAndPiping.aspx"&gt;last
time&lt;/a&gt;, I will now talk about writing re-usable scripts in PowerShell. Any command
that we have executed at PowerShell command line can be dropped into a script file.
I have lots of little PowerShell scripts for common tasks sitting in c:\Utilities\Scripts,
which I include in my path. Let’s say that I want to stop all running copies of Cassini
(aka the Visual Studio Web Development Server aka WebDev.WebServer.exe).
&lt;/p&gt;
&lt;p&gt;
Stop-Process -name WebDev.WebServer.exe -ErrorAction SilentlyContinue
&lt;/p&gt;
&lt;p&gt;
This will terminate all running copies of the above-named process. ErrorAction is
a common parameter for all PowerShell commands that tells PowerShell to ignore failures.
(By default, Stop-Process would fail if no processes with that name were found.)
&lt;/p&gt;
&lt;p&gt;
We’ve got our command. Now we want to turn it into a script so that we don’t have
to type it every time. Simply create a new text file with the above command text called
“Stop-Cassini.ps1” on your desktop using the text editor of your choice. (The script
can be in any directory, but we’ll put it on our desktop to start.) Let’s execute
the script by typing the following at the PowerShell prompt:
&lt;/p&gt;
&lt;p&gt;
Stop-Cassini
&lt;/p&gt;
&lt;p&gt;
&lt;img title="Current dirctory not in search path by default" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="153" alt="Current dirctory not in search path by default" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_5.png" width="1029" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
What just happened? Why can’t PowerShell find my script? By default, PowerShell doesn’t
include the current directory in its search path, unlike cmd.exe. To run a script
from the current directory, type the following:
&lt;/p&gt;
&lt;p&gt;
.\Stop-Cassini
&lt;/p&gt;
&lt;p&gt;
Another option is to add the current directory to the search path by modifying Computer…
Properties… Advanced… Environment Variables… Path. Or you can modify it for the current
PowerShell session using:
&lt;/p&gt;
&lt;p&gt;
$env:Path += '.\;'
&lt;/p&gt;
&lt;p&gt;
($env: provides access to environment variables in PowerShell. Try $env:ComputerName,
$env:OS, $env:NUMBER_OF_PROCESSORS, etc.)
&lt;/p&gt;
&lt;p&gt;
You could also modify your PowerShell startup script, but we’ll talk about that in
a future instalment. Let’s run our script again:
&lt;/p&gt;
&lt;p&gt;
&lt;img title="ExecutionPolicy error" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="152" alt="ExecutionPolicy error" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_8.png" width="1029" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
No dice again. By default, PowerShell does not allow unsigned scripts to run. This
is a good policy on servers, but is a royal pain on your own machine. That means that
every time you create or edit a script, you have to sign it. This doesn’t promote
the use of quick scripts for simplifying development and administration tasks. So
I turn off the requirement for script signing by running the following command from
an elevated (aka Administrator) PowerShell prompt:
&lt;/p&gt;
&lt;p&gt;
&lt;strike&gt;Set-ExecutionPolicy Unrestricted&lt;/strike&gt;
&lt;/p&gt;
&lt;p&gt;
Set-ExecutionPolicy RemoteSigned
&lt;/p&gt;
&lt;p&gt;
&lt;img title="Set-ExecutionPolicy succeeded" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="91" alt="Set-ExecutionPolicy succeeded" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_6d53deb0-11a4-4624-944f-7ecaf6919e50.png" width="1029" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
If this command fails with an access denied error:
&lt;/p&gt;
&lt;p&gt;
&lt;img title="Set-ExecutionPolicy failed" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="136" alt="Set-ExecutionPolicy failed" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_30df9cca-e3ce-4ad7-b30c-877eea9975c3.png" width="1029" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
then make sure that you launched a new PowerShell prompt via right-click Run as administrator…
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Third time is the charm…
&lt;/p&gt;
&lt;p&gt;
&lt;img title="Success!" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="99" alt="Success!" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WritingScriptswithPowerShell_125DA/image_20001279-4b07-4f31-9967-9988d229f348.png" width="1029" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
We are now able to write and use re-usable scripts in PowerShell. In my next instalment,
we’ll start pulling apart some more complicated scripts that simplify common developer
tasks.
&lt;/p&gt;
&lt;p&gt;
UPDATE: As pointed out by Josh in the comments, setting your execution policy to RemoteSigned
(rather than Unrestricted) is a better idea. Downloaded scripts will require you to
unblock them (Right-click… Properties… Unblock or &lt;a href="http://www.jameskovacs.com/blog/ZoneStripper10Released.aspx"&gt;ZoneStripper&lt;/a&gt; if
you have a lot) before execution. Thanks for the correction.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=47809c75-07b4-4982-a9a5-4d2de40edb49" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=47809c75-07b4-4982-a9a5-4d2de40edb49</comments>
      <category>PowerShell</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=59341170-64f4-4886-85f8-347e5c0bc2f2</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=59341170-64f4-4886-85f8-347e5c0bc2f2</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=59341170-64f4-4886-85f8-347e5c0bc2f2</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=59341170-64f4-4886-85f8-347e5c0bc2f2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="Coffee and Code" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="238" alt="Coffee and Code" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/CoffeeandCodeComingtoCalgary_B70D/image_6.png" width="380" align="right" border="0" />
          <a href="http://www.joeydevilla.com/">Joey
Devilla</a> (aka The Accordian Guy) from Microsoft’s Toronto office started <em><a href="http://www.coffeeandcode.org/">Coffee
and Code</a></em> a few weeks ago in Toronto and <a href="http://blogs.msdn.com/cdndevs/">John
Bristowe</a> is bringing the experience to Calgary. When John contacted me about the
event, I thought to myself, “I like coffee. I like code. I want to be involved!” (Heck,
I would order an Americano via intravenous drop if I could.) So John and I will be
hanging at the <a href="http://www.kawacalgary.ca/kawa.php">Kawa Espresso Bar</a> this
Friday for the entire day drinking coffee, cutting code, and talking to anyone and
everyone about software development. John is broadly familiar with a wide variety
of Microsoft development technologies, as am I. I’ll also be happy to talk about Castle
Windsor (DI/IoC), NHibernate (ORM), OOP and SOLID, TDD/BDD, continuous integration,
software architectures, ASP.NET MVC, WPF/Prism, build automation with psake, … Curious
what <a href="http://altdotnet.org">ALT.NET</a> is about, I’ll be happy to talk about
that too! I got <a href="http://www.jameskovacs.com/blog/CalgaryNETUserGroupPresentationPostponed.aspx">my
cast</a> off today from my ice skating accident two weeks ago and am in a half-cast
now. So I am hopeful that I’ll be able to demonstrate some <a href="http://www.jameskovacs.com/blog/CategoryView.aspx?category=Screencast">ReSharper
Jedi skills</a> for those curious about the amazing tool that is <a href="http://www.jetbrains.com/resharper">ReSharper</a>.
(I am going to be daring and have a <a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.5+Nightly+Builds">nightly
build of ReSharper 4.5</a> on my laptop to show off some new features.) So come join
John and I for some caffeinated coding fun at the <strong>Kawa Espresso Bar</strong> anytime
between <strong>9am and 4pm Friday, March 13, 2009</strong>.
</p>
        <iframe marginwidth="0" marginheight="0" src="http://maps.google.ca/maps?f=q&amp;hl=en&amp;geocode=&amp;q=Kawa+Espresso+Bar&amp;sll=51.055072,-114.077997&amp;sspn=0.034906,0.075188&amp;ie=UTF8&amp;cid=51040169,-114081870,15051145552290551770&amp;s=AARTsJpaNsF8J4jYrHOCvfuO3n6w0NmBTw&amp;ll=51.048247,-114.078598&amp;spn=0.016188,0.025749&amp;z=14&amp;iwloc=A&amp;output=embed" frameborder="0" width="400" scrolling="no" height="400">
        </iframe>
        <p>
This post has been brought to you by the letter C and the number 4…
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=59341170-64f4-4886-85f8-347e5c0bc2f2" />
      </body>
      <title>Coffee and Code Coming to Calgary</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=59341170-64f4-4886-85f8-347e5c0bc2f2</guid>
      <link>http://www.jameskovacs.com/blog/CoffeeAndCodeComingToCalgary.aspx</link>
      <pubDate>Mon, 09 Mar 2009 19:41:34 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="Coffee and Code" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="238" alt="Coffee and Code" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/CoffeeandCodeComingtoCalgary_B70D/image_6.png" width="380" align="right" border="0"&gt; &lt;a href="http://www.joeydevilla.com/"&gt;Joey
Devilla&lt;/a&gt; (aka The Accordian Guy) from Microsoft’s Toronto office started &lt;em&gt;&lt;a href="http://www.coffeeandcode.org/"&gt;Coffee
and Code&lt;/a&gt;&lt;/em&gt; a few weeks ago in Toronto and &lt;a href="http://blogs.msdn.com/cdndevs/"&gt;John
Bristowe&lt;/a&gt; is bringing the experience to Calgary. When John contacted me about the
event, I thought to myself, “I like coffee. I like code. I want to be involved!” (Heck,
I would order an Americano via intravenous drop if I could.) So John and I will be
hanging at the &lt;a href="http://www.kawacalgary.ca/kawa.php"&gt;Kawa Espresso Bar&lt;/a&gt; this
Friday for the entire day drinking coffee, cutting code, and talking to anyone and
everyone about software development. John is broadly familiar with a wide variety
of Microsoft development technologies, as am I. I’ll also be happy to talk about Castle
Windsor (DI/IoC), NHibernate (ORM), OOP and SOLID, TDD/BDD, continuous integration,
software architectures, ASP.NET MVC, WPF/Prism, build automation with psake, … Curious
what &lt;a href="http://altdotnet.org"&gt;ALT.NET&lt;/a&gt; is about, I’ll be happy to talk about
that too! I got &lt;a href="http://www.jameskovacs.com/blog/CalgaryNETUserGroupPresentationPostponed.aspx"&gt;my
cast&lt;/a&gt; off today from my ice skating accident two weeks ago and am in a half-cast
now. So I am hopeful that I’ll be able to demonstrate some &lt;a href="http://www.jameskovacs.com/blog/CategoryView.aspx?category=Screencast"&gt;ReSharper
Jedi skills&lt;/a&gt; for those curious about the amazing tool that is &lt;a href="http://www.jetbrains.com/resharper"&gt;ReSharper&lt;/a&gt;.
(I am going to be daring and have a &lt;a href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.5+Nightly+Builds"&gt;nightly
build of ReSharper 4.5&lt;/a&gt; on my laptop to show off some new features.) So come join
John and I for some caffeinated coding fun at the &lt;strong&gt;Kawa Espresso Bar&lt;/strong&gt; anytime
between &lt;strong&gt;9am and 4pm Friday, March 13, 2009&lt;/strong&gt;.
&lt;/p&gt;
&lt;iframe marginwidth="0" marginheight="0" src="http://maps.google.ca/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Kawa+Espresso+Bar&amp;amp;sll=51.055072,-114.077997&amp;amp;sspn=0.034906,0.075188&amp;amp;ie=UTF8&amp;amp;cid=51040169,-114081870,15051145552290551770&amp;amp;s=AARTsJpaNsF8J4jYrHOCvfuO3n6w0NmBTw&amp;amp;ll=51.048247,-114.078598&amp;amp;spn=0.016188,0.025749&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;output=embed" frameborder="0" width="400" scrolling="no" height="400"&gt;
&lt;/iframe&gt;
&lt;p&gt;
This post has been brought to you by the letter C and the number 4…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=59341170-64f4-4886-85f8-347e5c0bc2f2" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=59341170-64f4-4886-85f8-347e5c0bc2f2</comments>
      <category>.NET General;Agile;Events</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=1fc8c544-6943-4880-a84a-eba086203c33</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=1fc8c544-6943-4880-a84a-eba086203c33</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=1fc8c544-6943-4880-a84a-eba086203c33</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1fc8c544-6943-4880-a84a-eba086203c33</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="teamcity.codebetter.com" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="533" alt="teamcity.codebetter.com" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/AnnouncingTeamCity.CodeBetter.com_11FC1/image_c3c15c34-850b-4776-9413-3031aeba6624.png" width="600" border="0" />
        </p>
        <p>
          <a href="http://codebetter.com">CodeBetter</a> – in collaboration with <a href="http://www.jetbrains.com">JetBrains</a>, <a href="http://ideavine.net/">IdeaVine</a>,
and <a href="http://devlicio.us">Devlicio.us</a> – is proud to announce the launch
of <a href="http://teamcity.codebetter.com">TeamCity.CodeBetter.com</a> – a continuous
integration server farm for open source projects. JetBrains is generously supporting
our community efforts by funding the monthly costs of the server farm and providing
a <a href="http://www.jetbrains.com/teamcity/">TeamCity</a> Enterprise license. Volunteers
from CodeBetter, IdeaVine, and Devlicio.us are administering the servers and setting
up OSS projects on the build grid. We are currently providing CI for the following
projects (in alphabetical order):
</p>
        <ul>
          <li>
            <a href="http://fluentnhibernate.org/">Fluent NHibernate</a>
          </li>
          <li>
            <a href="http://code.google.com/p/masstransit/">MassTransit</a>
          </li>
          <li>
            <a href="http://nhforge.org/">NHibernate</a>
          </li>
          <li>
            <a href="http://ninject.org/">Ninject</a>
          </li>
          <li>
            <a href="http://ayende.com/">Rhino Tools</a> (including Rhino Mocks, Rhino Commons,
Rhino ServiceBus, …) 
</li>
          <li>
            <a href="http://storyteller.tigris.org/">Story Teller</a>
          </li>
          <li>
            <a href="http://structuremap.sourceforge.net">Structure Map</a>
          </li>
        </ul>
        <p>
We will be adding additional OSS projects in the coming weeks/months. You can <a href="http://teamcity.codebetter.com/registerUser.html?init=1">register
for an account here</a> or <a href="http://teamcity.codebetter.com/guestLogin.html?guest=1">log
in as a guest</a>. By default, new users can view all hosted projects. If you are
a project member, you can email us at <a href="mailto:teamcity@codebetter.com">teamcity@codebetter.com</a> to
have us add you as a project member. (N.B. You only need to be a project member on
TeamCity if you need to manage/modify the build.)
</p>
        <p>
The current build grid consists of:
</p>
        <ul>
          <li>
TeamCity – Dual CPU Quad-Core Xeon 5310 @ 1.60 GHz (clovertown) with 4GB RAM &amp;
2x250GB SATA II in RAID-1 
</li>
          <li>
Agents – Single CPU Dual-Core Xeon 5130 @ 2.00 GHz (Woodcrest) with 4GB RAM &amp;
2x250GB SATA II</li>
        </ul>
        <p>
Both are physical servers hosted by <a href="http://softlayer.com/">SoftLayer</a>.
As we add more projects, we will add additional agent servers to distribute the load.
Each agent will have the following software installed:
</p>
        <ul>
          <li>
Microsoft Windows Server 2003 R2 Standard x64 Edition SP2 
</li>
          <li>
Microsoft .NET Framework 1.1, 2.0 SP2, 3.0 SP2, 3.5 SP1 
</li>
          <li>
Microsoft .NET Framework 2.0 SDK 
</li>
          <li>
Windows SDK 6.1 
</li>
          <li>
Microsoft SQL Server 2008 Express (64-bit) 
</li>
          <li>
Ruby 1.8.6-26 (including rake, rails, activerecord, and rubyzip)</li>
        </ul>
        <p>
Build scripts can be authored in NAnt, MSBuild, Rake, or any other build runner supported
by TeamCity. The build farm monitors your current version control system – at SoureForge.net,
Google Code, or elsewhere – for changes and supports Subversion, CVS, and other popular
source control systems. (TeamCity 4.0.2 – current version – does not support GIT.
GIT support is planned for the 4.1 release, which should to be released at the end
of March. We will upgrade to TeamCity 4.1 as soon as it is released.)
</p>
        <p>
Projects can use SQL Express for integration testing. N.B. We will not be manually
setting up databases, virtual directories, or other services for projects. If you
need a database created, your build script must include its creation/teardown.
</p>
        <p>
If your build script includes unit/integration tests, TeamCity can display the results
in the UI if they are in the correct format. We can work with individual projects
to ensure that this is the case. TeamCity can archive build artifacts and make them
available for download if projects want to make CI builds available to the community.
</p>
        <p>
TeamCity has rich notification mechanisms for communicating build status of projects,
including email, IDE (VS, IntelliJ, Eclipse), and Windows Tray notifiers. Alternately
you can subscribe to the build server’s RSS feed for <a href="http://teamcity.codebetter.com/feed.html?itemsType=builds&amp;buildStatus=successful&amp;buildStatus=failed">succeeded
and failed builds</a>, <a href="http://teamcity.codebetter.com/feed.html?itemsType=builds&amp;buildStatus=successful">succeeded
builds only</a>, or <a href="http://teamcity.codebetter.com/feed.html?itemsType=builds&amp;buildStatus=failed">failed
builds only</a>. You can make use of these tools to stay apprised of current build
health as team members check in changes to source control. All notifiers can be downloaded
and configured through the <em><a href="http://teamcity.codebetter.com/profile.html?">My
Settings &amp; Tools menu</a></em> on the <a href="http://teamcity.codebetter.com/">TeamCity
server</a> itself.
</p>
        <p>
If you would like your OSS project considered for free CI hosting, you must meet the
following requirements:
</p>
        <ul>
          <li>
Active project with a commit in the last 3 months. 
</li>
          <li>
            <a href="http://www.opensource.org/">OSI</a>-approved OSS license with a publicly
available source.</li>
        </ul>
        <p>
We will prioritize requests for hosting solely at our discretion, though we will try
to accommodate as many requests as possible. (We do have day jobs, you know.) <img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif" /> We
reserve the right to remove projects from the build farm that are monopolizing farm
resources. (i.e. If a build script pegs all CPUs at 100% for one hour at a time, it’s
going to get disabled so as to be fair to other projects.)
</p>
        <p>
To apply to have us host CI for your OSS project:
</p>
        <ul>
          <li>
Register a user account <a href="http://teamcity.codebetter.com/registerUser.html?init=1">here</a>. 
</li>
          <li>
Email <a href="mailto:teamcity@codebetter.com">teamcity@codebetter.com</a> with the
following information: 
<ul><li>
Your user account name, which you created above. 
</li><li>
Project name &amp; URL. 
</li><li>
Link to your OSI-approved OSS license. 
</li><li>
URL and type (SVN, CVS, …) of your source control system. 
</li><li>
Build runner (NAnt, MSBuild, Rake, etc.) and default target. 
</li><li>
Any additional requirements you might have.</li></ul></li>
        </ul>
        <p>
CodeBetter, JetBrains, IdeaVine, and Devlicio.us are looking forward to providing
free continuous integration hosting for the open source community. Please email us
at <a href="mailto:teamcity@codebetter.com">teamcity@codebetter.com</a> if you have
any questions or comments.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=1fc8c544-6943-4880-a84a-eba086203c33" />
      </body>
      <title>Announcing TeamCity.CodeBetter.com</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=1fc8c544-6943-4880-a84a-eba086203c33</guid>
      <link>http://www.jameskovacs.com/blog/AnnouncingTeamCityCodeBettercom.aspx</link>
      <pubDate>Tue, 24 Feb 2009 21:40:11 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="teamcity.codebetter.com" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="533" alt="teamcity.codebetter.com" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/AnnouncingTeamCity.CodeBetter.com_11FC1/image_c3c15c34-850b-4776-9413-3031aeba6624.png" width="600" border="0"&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codebetter.com"&gt;CodeBetter&lt;/a&gt; – in collaboration with &lt;a href="http://www.jetbrains.com"&gt;JetBrains&lt;/a&gt;, &lt;a href="http://ideavine.net/"&gt;IdeaVine&lt;/a&gt;,
and &lt;a href="http://devlicio.us"&gt;Devlicio.us&lt;/a&gt; – is proud to announce the launch
of &lt;a href="http://teamcity.codebetter.com"&gt;TeamCity.CodeBetter.com&lt;/a&gt; – a continuous
integration server farm for open source projects. JetBrains is generously supporting
our community efforts by funding the monthly costs of the server farm and providing
a &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt; Enterprise license. Volunteers
from CodeBetter, IdeaVine, and Devlicio.us are administering the servers and setting
up OSS projects on the build grid. We are currently providing CI for the following
projects (in alphabetical order):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://fluentnhibernate.org/"&gt;Fluent NHibernate&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://code.google.com/p/masstransit/"&gt;MassTransit&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://nhforge.org/"&gt;NHibernate&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://ninject.org/"&gt;Ninject&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://ayende.com/"&gt;Rhino Tools&lt;/a&gt; (including Rhino Mocks, Rhino Commons,
Rhino ServiceBus, …) 
&lt;li&gt;
&lt;a href="http://storyteller.tigris.org/"&gt;Story Teller&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://structuremap.sourceforge.net"&gt;Structure Map&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We will be adding additional OSS projects in the coming weeks/months. You can &lt;a href="http://teamcity.codebetter.com/registerUser.html?init=1"&gt;register
for an account here&lt;/a&gt; or &lt;a href="http://teamcity.codebetter.com/guestLogin.html?guest=1"&gt;log
in as a guest&lt;/a&gt;. By default, new users can view all hosted projects. If you are
a project member, you can email us at &lt;a href="mailto:teamcity@codebetter.com"&gt;teamcity@codebetter.com&lt;/a&gt; to
have us add you as a project member. (N.B. You only need to be a project member on
TeamCity if you need to manage/modify the build.)
&lt;/p&gt;
&lt;p&gt;
The current build grid consists of:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
TeamCity – Dual CPU Quad-Core Xeon 5310 @ 1.60 GHz (clovertown) with 4GB RAM &amp;amp;
2x250GB SATA II in RAID-1 
&lt;li&gt;
Agents – Single CPU Dual-Core Xeon 5130 @ 2.00 GHz (Woodcrest) with 4GB RAM &amp;amp;
2x250GB SATA II&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Both are physical servers hosted by &lt;a href="http://softlayer.com/"&gt;SoftLayer&lt;/a&gt;.
As we add more projects, we will add additional agent servers to distribute the load.
Each agent will have the following software installed:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Microsoft Windows Server 2003 R2 Standard x64 Edition SP2 
&lt;li&gt;
Microsoft .NET Framework 1.1, 2.0 SP2, 3.0 SP2, 3.5 SP1 
&lt;li&gt;
Microsoft .NET Framework 2.0 SDK 
&lt;li&gt;
Windows SDK 6.1 
&lt;li&gt;
Microsoft SQL Server 2008 Express (64-bit) 
&lt;li&gt;
Ruby 1.8.6-26 (including rake, rails, activerecord, and rubyzip)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Build scripts can be authored in NAnt, MSBuild, Rake, or any other build runner supported
by TeamCity. The build farm monitors your current version control system – at SoureForge.net,
Google Code, or elsewhere – for changes and supports Subversion, CVS, and other popular
source control systems. (TeamCity 4.0.2 – current version – does not support GIT.
GIT support is planned for the 4.1 release, which should to be released at the end
of March. We will upgrade to TeamCity 4.1 as soon as it is released.)
&lt;/p&gt;
&lt;p&gt;
Projects can use SQL Express for integration testing. N.B. We will not be manually
setting up databases, virtual directories, or other services for projects. If you
need a database created, your build script must include its creation/teardown.
&lt;/p&gt;
&lt;p&gt;
If your build script includes unit/integration tests, TeamCity can display the results
in the UI if they are in the correct format. We can work with individual projects
to ensure that this is the case. TeamCity can archive build artifacts and make them
available for download if projects want to make CI builds available to the community.
&lt;/p&gt;
&lt;p&gt;
TeamCity has rich notification mechanisms for communicating build status of projects,
including email, IDE (VS, IntelliJ, Eclipse), and Windows Tray notifiers. Alternately
you can subscribe to the build server’s RSS feed for &lt;a href="http://teamcity.codebetter.com/feed.html?itemsType=builds&amp;amp;buildStatus=successful&amp;amp;buildStatus=failed"&gt;succeeded
and failed builds&lt;/a&gt;, &lt;a href="http://teamcity.codebetter.com/feed.html?itemsType=builds&amp;amp;buildStatus=successful"&gt;succeeded
builds only&lt;/a&gt;, or &lt;a href="http://teamcity.codebetter.com/feed.html?itemsType=builds&amp;amp;buildStatus=failed"&gt;failed
builds only&lt;/a&gt;. You can make use of these tools to stay apprised of current build
health as team members check in changes to source control. All notifiers can be downloaded
and configured through the &lt;em&gt;&lt;a href="http://teamcity.codebetter.com/profile.html?"&gt;My
Settings &amp;amp; Tools menu&lt;/a&gt;&lt;/em&gt; on the &lt;a href="http://teamcity.codebetter.com/"&gt;TeamCity
server&lt;/a&gt; itself.
&lt;/p&gt;
&lt;p&gt;
If you would like your OSS project considered for free CI hosting, you must meet the
following requirements:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Active project with a commit in the last 3 months. 
&lt;li&gt;
&lt;a href="http://www.opensource.org/"&gt;OSI&lt;/a&gt;-approved OSS license with a publicly
available source.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We will prioritize requests for hosting solely at our discretion, though we will try
to accommodate as many requests as possible. (We do have day jobs, you know.) &lt;img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif"&gt; We
reserve the right to remove projects from the build farm that are monopolizing farm
resources. (i.e. If a build script pegs all CPUs at 100% for one hour at a time, it’s
going to get disabled so as to be fair to other projects.)
&lt;/p&gt;
&lt;p&gt;
To apply to have us host CI for your OSS project:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Register a user account &lt;a href="http://teamcity.codebetter.com/registerUser.html?init=1"&gt;here&lt;/a&gt;. 
&lt;li&gt;
Email &lt;a href="mailto:teamcity@codebetter.com"&gt;teamcity@codebetter.com&lt;/a&gt; with the
following information: 
&lt;ul&gt;
&lt;li&gt;
Your user account name, which you created above. 
&lt;li&gt;
Project name &amp;amp; URL. 
&lt;li&gt;
Link to your OSI-approved OSS license. 
&lt;li&gt;
URL and type (SVN, CVS, …) of your source control system. 
&lt;li&gt;
Build runner (NAnt, MSBuild, Rake, etc.) and default target. 
&lt;li&gt;
Any additional requirements you might have.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
CodeBetter, JetBrains, IdeaVine, and Devlicio.us are looking forward to providing
free continuous integration hosting for the open source community. Please email us
at &lt;a href="mailto:teamcity@codebetter.com"&gt;teamcity@codebetter.com&lt;/a&gt; if you have
any questions or comments.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=1fc8c544-6943-4880-a84a-eba086203c33" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=1fc8c544-6943-4880-a84a-eba086203c33</comments>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=435bdc00-e68d-499a-a984-19b86ede1d27</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=435bdc00-e68d-499a-a984-19b86ede1d27</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=435bdc00-e68d-499a-a984-19b86ede1d27</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=435bdc00-e68d-499a-a984-19b86ede1d27</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img title="James in Cast" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="205" alt="James in Cast" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/Calgar.NETUserGroupPresentationPostponed_13412/JamesInCast_3.jpg" width="204" align="right" border="0" />Unfortunately
I’m going to have to postpone <a href="http://www.jameskovacs.com/blog/ldquoLightUpYourApplicationWithConventionOverConfigurationrdquoAtCalgaryNETUserGroup.aspx">my
presentation on Tuesday</a> as I broke my left wrist late this afternoon while ice
skating with my older son. (I was practicing skating backwards, slipped, and landed
with all my weight on the one wrist.) It’s a distal radial fracture, which means lots
o’ pain meds for a few days and a cast for 6-8 weeks. <img alt="smile_sad" src="http://spaces.live.com/rte/emoticons/smile_sad.gif" /> You
can see the effects of the percocet kicking in in the photo to the right. On a positive
note, they let you pick the colour of the fibreglass cast. Glad to know that you can
break your bones, but still be fashion conscious. Unfortunately they didn’t have my
corporate colour green, which would have been cool.
</p>
        <p>
So coding is going to be excruciatingly slow for awhile. I’ll reschedule the presentation
once the cast comes off.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=435bdc00-e68d-499a-a984-19b86ede1d27" />
      </body>
      <title>Calgary .NET User Group Presentation Postponed</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=435bdc00-e68d-499a-a984-19b86ede1d27</guid>
      <link>http://www.jameskovacs.com/blog/CalgaryNETUserGroupPresentationPostponed.aspx</link>
      <pubDate>Mon, 23 Feb 2009 05:15:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img title="James in Cast" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="205" alt="James in Cast" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/Calgar.NETUserGroupPresentationPostponed_13412/JamesInCast_3.jpg" width="204" align="right" border="0"&gt;Unfortunately
I’m going to have to postpone &lt;a href="http://www.jameskovacs.com/blog/ldquoLightUpYourApplicationWithConventionOverConfigurationrdquoAtCalgaryNETUserGroup.aspx"&gt;my
presentation on Tuesday&lt;/a&gt; as I broke my left wrist late this afternoon while ice
skating with my older son. (I was practicing skating backwards, slipped, and landed
with all my weight on the one wrist.) It’s a distal radial fracture, which means lots
o’ pain meds for a few days and a cast for 6-8 weeks. &lt;img alt="smile_sad" src="http://spaces.live.com/rte/emoticons/smile_sad.gif"&gt; You
can see the effects of the percocet kicking in in the photo to the right. On a positive
note, they let you pick the colour of the fibreglass cast. Glad to know that you can
break your bones, but still be fashion conscious. Unfortunately they didn’t have my
corporate colour green, which would have been cool.
&lt;/p&gt;
&lt;p&gt;
So coding is going to be excruciatingly slow for awhile. I’ll reschedule the presentation
once the cast comes off.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=435bdc00-e68d-499a-a984-19b86ede1d27" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=435bdc00-e68d-499a-a984-19b86ede1d27</comments>
      <category>Agile;Presentations</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=2df46c55-4c89-446b-a9f1-e1746b4c4b41</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=2df46c55-4c89-446b-a9f1-e1746b4c4b41</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=2df46c55-4c89-446b-a9f1-e1746b4c4b41</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2df46c55-4c89-446b-a9f1-e1746b4c4b41</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Coming to a .NET User Group near you*… This Tuesday only…
</p>
        <table cellspacing="0" cellpadding="2" border="0">
          <tbody>
            <tr>
              <td valign="top" width="50">
Topic:</td>
              <td valign="top">
                <strong>Light Up Your Application with Convention-Over-Configuration</strong>
              </td>
            </tr>
            <tr>
              <td valign="top" width="50">
Date:</td>
              <td valign="top">
                <strong>
                  <strike>Tuesday, February 24, 2009</strike>
                  <font color="#ff0000">Postponed</font>
                </strong>
              </td>
            </tr>
            <tr>
              <td valign="top" width="50">
Time:</td>
              <td valign="top">
                <strong>5:00 pm - 5:15 pm</strong> (registration)</td>
            </tr>
            <tr>
              <td valign="top" width="50">
 </td>
              <td valign="top">
                <strong>5:30 pm – ???</strong> (presentation)</td>
            </tr>
            <tr>
              <td valign="top" width="50">
Location:</td>
              <td valign="top">
                <strong>Nexen Conference Center</strong>
                <br />
801-7th Ave. S.W., Calgary, AB. (Plus 15 level)<br /><a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;time=&amp;date=&amp;ttype=&amp;q=801+7+Avenue+S.W.+Calgary+Alberta&amp;sll=51.04507,-114.06319&amp;sspn=0.299599,0.914612&amp;ie=UTF8&amp;om=1&amp;ll=51.046628,-114.077826&amp;spn=0.009362,0.028582&amp;z=16&amp;iwloc=addr">Map</a></td>
            </tr>
          </tbody>
        </table>
        <p>
Inversion of Control (IoC) containers, such as Castle Windsor, increase the flexibility
and testability of your architecture by decoupling dependencies, but as an application
grows, container configuration can become onerous. We will examine how convention-over-configuration
can allow us to achieve simplicity in IoC configuration while still maintaining flexibility
and testability. You can have your cake and eat it too!
</p>
        <p>
* Assuming that you live in Calgary. <img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif" /></p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=2df46c55-4c89-446b-a9f1-e1746b4c4b41" />
      </body>
      <title>&amp;ldquo;Light Up Your Application with Convention-Over-Configuration&amp;rdquo; at Calgary.NET User Group</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=2df46c55-4c89-446b-a9f1-e1746b4c4b41</guid>
      <link>http://www.jameskovacs.com/blog/ldquoLightUpYourApplicationWithConventionOverConfigurationrdquoAtCalgaryNETUserGroup.aspx</link>
      <pubDate>Sun, 22 Feb 2009 22:50:16 GMT</pubDate>
      <description>&lt;p&gt;
Coming to a .NET User Group near you*… This Tuesday only…
&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="50"&gt;
Topic:&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;Light Up Your Application with Convention-Over-Configuration&lt;/strong&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="50"&gt;
Date:&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;&lt;strike&gt;Tuesday, February 24, 2009&lt;/strike&gt; &lt;font color="#ff0000"&gt;Postponed&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="50"&gt;
Time:&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;5:00 pm - 5:15 pm&lt;/strong&gt; (registration)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="50"&gt;
&amp;nbsp;&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;5:30 pm – ???&lt;/strong&gt; (presentation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="50"&gt;
Location:&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;strong&gt;Nexen Conference Center&lt;/strong&gt;
&lt;br&gt;
801-7th Ave. S.W., Calgary, AB. (Plus 15 level)&lt;br&gt;
&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;time=&amp;amp;date=&amp;amp;ttype=&amp;amp;q=801+7+Avenue+S.W.+Calgary+Alberta&amp;amp;sll=51.04507,-114.06319&amp;amp;sspn=0.299599,0.914612&amp;amp;ie=UTF8&amp;amp;om=1&amp;amp;ll=51.046628,-114.077826&amp;amp;spn=0.009362,0.028582&amp;amp;z=16&amp;amp;iwloc=addr"&gt;Map&lt;/a&gt; 
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Inversion of Control (IoC) containers, such as Castle Windsor, increase the flexibility
and testability of your architecture by decoupling dependencies, but as an application
grows, container configuration can become onerous. We will examine how convention-over-configuration
can allow us to achieve simplicity in IoC configuration while still maintaining flexibility
and testability. You can have your cake and eat it too!
&lt;/p&gt;
&lt;p&gt;
* Assuming that you live in Calgary. &lt;img alt="smile_regular" src="http://spaces.live.com/rte/emoticons/smile_regular.gif"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=2df46c55-4c89-446b-a9f1-e1746b4c4b41" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=2df46c55-4c89-446b-a9f1-e1746b4c4b41</comments>
      <category>Agile;Presentations</category>
    </item>
  </channel>
</rss>