<?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:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" 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>Thu, 15 Oct 2009 04:06:46 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>jkovacs@post.harvard.edu</managingEditor>
    <webMaster>jkovacs@post.harvard.edu</webMaster>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=67421aa0-3548-4cf5-bf04-e0e80e4491e2</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=67421aa0-3548-4cf5-bf04-e0e80e4491e2</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=67421aa0-3548-4cf5-bf04-e0e80e4491e2</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=67421aa0-3548-4cf5-bf04-e0e80e4491e2</wfw:commentRss>
      <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="image" border="0" alt="image" align="left" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/e08f92d1f8ab_129B9/image_17332e32-55b0-456d-9c98-702a78095f2e.png" width="128" height="55" />
        </p>
        <p>
A few announcements… First the big one. Many people have been using psake - both the
PowerShell 1.0- and 2.0-compatible versions - in production without any significant
issues. For that reason, we have released psake v1.00 (compatible with PowerShell
1.0). The only difference between psake v1.00 and psake v0.23 is the version number.
My friend, <a href="http://ayende.com" target="_blank">Ayende</a>, has <a href="http://ayende.com/Blog/archive/2009/08/30/on-psake.aspx" target="_blank">a
great example</a> of converting Rhino Mocks build to use psake.
</p>
        <p>
          <a href="http://psake.googlecode.com/files/psake-v1.00.zip">http://psake.googlecode.com/files/psake-v1.00.zip</a>
        </p>
        <p>
We have released psake v2.01 (compatible with PowerShell 2.0). (This was formerly
called psake v0.24, "Jorge", and psake-ps2.) A big thanks to Jorge Matos for all his
work on psake v2.01.
</p>
        <p>
          <a href="http://psake.googlecode.com/files/psake-v2.01.zip">http://psake.googlecode.com/files/psake-v2.01.zip</a>
        </p>
        <p>
A few minor changes... The source code for psake has been moved to GitHub and the
SVN repository at Google Code has been retired. We will still be using Google Code
for bug tracking, wiki pages, etc. If you want the latest source code, you can always
download a zip file for master (aka trunk in SVN terms) - or any tags/branches - from:
</p>
        <p>
          <a href="http://github.com/JamesKovacs/psake">http://github.com/JamesKovacs/psake</a>
        </p>
        <p>
Note that there is no need to install Git to download the latest package as GitHub
will create the appropriate zip file on the fly.
</p>
        <p>
If you have some great idea, you can download the git repo from <a title="git://github.com/JamesKovacs/psake.git" href="git://github.com/JamesKovacs/psake.git">git://github.com/JamesKovacs/psake.git</a> or <a href="http://github.com/JamesKovacs/psake.git">http://github.com/JamesKovacs/psake.git</a>.
(msysgit is the Git package of choice for Windows. You can download it from <a title="http://code.google.com/p/msysgit/" href="http://code.google.com/p/msysgit/">http://code.google.com/p/msysgit/</a>.)
I would encourage you to read Jeremy Skinner’s <a href="http://mvccontrib.github.com/MvcContrib/" target="_blank">excellent
guide</a> for contributing to <a href="http://www.codeplex.com/MVCContrib" target="_blank">MvcContrib</a> via
GitHub. Just mentally replace “MvcContrib” with “psake”, though I’d encourage you
to contribute to MvcContrib too. :)
</p>
        <p>
I would like to offer lots of kudos to my collaborators/conspirators on the project.
Jorge Matos has been instrumental in updating/improving psake to use the new PowerShell
v2 features. Thanks to Shaun Becker for patches and answering newsgroup questions.
And thanks to Eric Hexter for his assistance in moderating the psake-users Google
Group. I am heartened and thankful for the willing collaboration on this project and
am excited to watch it grow. If you have any questions, please do not hesitate to
ask.
</p>
        <p>
Going forward, we are retiring psake v1.00 and focusing on psake v2.00. If there is
demand for a PowerShell v1-compatible version of psake, we will create a branch based
on the v1.00 tag, but we will mostly be focused on the PowerShell v2-compatible version
(aka psake v2.00). So your next question probably is…
</p>
        <h4>What's New in psake v2.01? 
</h4>
        <h6>(from Jorge Matos)
</h6>
        <p>
The main difference is that psake v2.01 has been re-written as a module that contains
advanced functions.  Someone using the module could either run the import-module
command with the path to the module file (i.e. import-module .\psake.psm1) or (my
preference) you can copy the psake.psm1 into a folder called psake into the "Modules"
folder in your profile directory (you may have to create it if it's not there) or
your machine-wide "Modules" directory: 
</p>
        <p>
i.e. Profile Directory: 
</p>
        <p>
C:\Users\Jorge\Documents\WindowsPowerShell\Modules\psake 
</p>
        <p>
i.e. Machine-wide Modules folder: 
</p>
        <p>
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\psake 
</p>
        <p>
Once the psake folder is created and you've copied the psake.psm1 file into it - restart
PS and type "import-module psake" - PS will find the module and load it automatically. 
What I've done is add the "Import-Module psake" to my profile script so that it is
loaded everytime I startup PS. 
</p>
        <h5>Module Benefits: 
</h5>
        <ol>
          <li>
Build scripts don't need to know where psake is installed, they just call Invoke-psake
and it works. 
</li>
          <li>
Encapsulation… Global variables are no longer required since they can be private to
a module unless explicitly exported (I haven't gotten around to actually changing
the psake code to not use global variables yet). 
</li>
          <li>
Modules can be unloaded if needed which removes all the code and variables from memory.</li>
        </ol>
        <h5>Advanced Functions: 
</h5>
        <p>
The other big difference is that the "Invoke-psake" and "Task" functions have been
converted into Advanced Functions which basically means you can take advantage of
comment help which means you can type help invoke-psake and you will get back real
help with examples.
</p>
        <h5>Minor changes: 
</h5>
        <ol>
          <li>
Coding style is different. 
</li>
          <li>
Try/Catch is used instead of the "Trap" statement. 
</li>
          <li>
Got rid of the "exec" function. 
</li>
          <li>
You can now define "Pre" and "Post" actions for a task. 
</li>
          <li>
You can define how the task name will be formatted. 
</li>
          <li>
You can define a "TaskSetup" function that will be executed before every task (took
that from NUnit). 
</li>
          <li>
You can define a "TaskTearDown" function that will be executed after every task (took
that from NUnit too). 
</li>
          <li>
Create a global variable called "psake_buildSucceeded" that will be set to true if
the build succeeds - scripts can check this. 
</li>
          <li>
Also added a "$noexit" switch to Run-Psake so that the function will not use the exit()
function so that you can test a build script at the command line without PS closing
down (the default behavior when the build fails is to call exit(1) so that the calling
code can determine if the build failed or not). 
</li>
          <li>
The psake-buildTester.ps1 had to be changed slightly in order for it to call the Invoke-psake
function. 
</li>
          <li>
Added more examples in the .\examples folder for POST conditions, PRE and POST Actions,
etc.</li>
        </ol>
        <p>
Happy (build) scripting!
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=67421aa0-3548-4cf5-bf04-e0e80e4491e2" />
      </body>
      <title>Releasing psake v1.00 &amp; psake v2.00</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=67421aa0-3548-4cf5-bf04-e0e80e4491e2</guid>
      <link>http://www.jameskovacs.com/blog/ReleasingPsakeV100PsakeV200.aspx</link>
      <pubDate>Thu, 15 Oct 2009 04:06:46 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="image" border="0" alt="image" align="left" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/e08f92d1f8ab_129B9/image_17332e32-55b0-456d-9c98-702a78095f2e.png" width="128" height="55"&gt;
&lt;/p&gt;
&lt;p&gt;
A few announcements… First the big one. Many people have been using psake - both the
PowerShell 1.0- and 2.0-compatible versions - in production without any significant
issues. For that reason, we have released psake v1.00 (compatible with PowerShell
1.0). The only difference between psake v1.00 and psake v0.23 is the version number.
My friend, &lt;a href="http://ayende.com" target="_blank"&gt;Ayende&lt;/a&gt;, has &lt;a href="http://ayende.com/Blog/archive/2009/08/30/on-psake.aspx" target="_blank"&gt;a
great example&lt;/a&gt; of converting Rhino Mocks build to use psake.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://psake.googlecode.com/files/psake-v1.00.zip"&gt;http://psake.googlecode.com/files/psake-v1.00.zip&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We have released psake v2.01 (compatible with PowerShell 2.0). (This was formerly
called psake v0.24, "Jorge", and psake-ps2.) A big thanks to Jorge Matos for all his
work on psake v2.01.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://psake.googlecode.com/files/psake-v2.01.zip"&gt;http://psake.googlecode.com/files/psake-v2.01.zip&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
A few minor changes... The source code for psake has been moved to GitHub and the
SVN repository at Google Code has been retired. We will still be using Google Code
for bug tracking, wiki pages, etc. If you want the latest source code, you can always
download a zip file for master (aka trunk in SVN terms) - or any tags/branches - from:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://github.com/JamesKovacs/psake"&gt;http://github.com/JamesKovacs/psake&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Note that there is no need to install Git to download the latest package as GitHub
will create the appropriate zip file on the fly.
&lt;/p&gt;
&lt;p&gt;
If you have some great idea, you can download the git repo from &lt;a title="git://github.com/JamesKovacs/psake.git" href="git://github.com/JamesKovacs/psake.git"&gt;git://github.com/JamesKovacs/psake.git&lt;/a&gt; or &lt;a href="http://github.com/JamesKovacs/psake.git"&gt;http://github.com/JamesKovacs/psake.git&lt;/a&gt;.
(msysgit is the Git package of choice for Windows. You can download it from &lt;a title="http://code.google.com/p/msysgit/" href="http://code.google.com/p/msysgit/"&gt;http://code.google.com/p/msysgit/&lt;/a&gt;.)
I would encourage you to read Jeremy Skinner’s &lt;a href="http://mvccontrib.github.com/MvcContrib/" target="_blank"&gt;excellent
guide&lt;/a&gt; for contributing to &lt;a href="http://www.codeplex.com/MVCContrib" target="_blank"&gt;MvcContrib&lt;/a&gt; via
GitHub. Just mentally replace “MvcContrib” with “psake”, though I’d encourage you
to contribute to MvcContrib too. :)
&lt;/p&gt;
&lt;p&gt;
I would like to offer lots of kudos to my collaborators/conspirators on the project.
Jorge Matos has been instrumental in updating/improving psake to use the new PowerShell
v2 features. Thanks to Shaun Becker for patches and answering newsgroup questions.
And thanks to Eric Hexter for his assistance in moderating the psake-users Google
Group. I am heartened and thankful for the willing collaboration on this project and
am excited to watch it grow. If you have any questions, please do not hesitate to
ask.
&lt;/p&gt;
&lt;p&gt;
Going forward, we are retiring psake v1.00 and focusing on psake v2.00. If there is
demand for a PowerShell v1-compatible version of psake, we will create a branch based
on the v1.00 tag, but we will mostly be focused on the PowerShell v2-compatible version
(aka psake v2.00). So your next question probably is…
&lt;/p&gt;
&lt;h4&gt;What's New in psake v2.01? 
&lt;/h4&gt;
&lt;h6&gt;(from Jorge Matos)
&lt;/h6&gt;
&lt;p&gt;
The main difference is that psake v2.01 has been re-written as a module that contains
advanced functions.&amp;nbsp; Someone using the module could either run the import-module
command with the path to the module file (i.e. import-module .\psake.psm1) or (my
preference) you can copy the psake.psm1 into a folder called psake into the "Modules"
folder in your profile directory (you may have to create it if it's not there) or
your machine-wide "Modules" directory: 
&lt;/p&gt;
&lt;p&gt;
i.e. Profile Directory: 
&lt;/p&gt;
&lt;p&gt;
C:\Users\Jorge\Documents\WindowsPowerShell\Modules\psake 
&lt;/p&gt;
&lt;p&gt;
i.e. Machine-wide Modules folder: 
&lt;/p&gt;
&lt;p&gt;
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\psake 
&lt;/p&gt;
&lt;p&gt;
Once the psake folder is created and you've copied the psake.psm1 file into it - restart
PS and type "import-module psake" - PS will find the module and load it automatically.&amp;nbsp;
What I've done is add the "Import-Module psake" to my profile script so that it is
loaded everytime I startup PS. 
&lt;/p&gt;
&lt;h5&gt;Module Benefits: 
&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;
Build scripts don't need to know where psake is installed, they just call Invoke-psake
and it works. 
&lt;li&gt;
Encapsulation… Global variables are no longer required since they can be private to
a module unless explicitly exported (I haven't gotten around to actually changing
the psake code to not use global variables yet). 
&lt;li&gt;
Modules can be unloaded if needed which removes all the code and variables from memory.&lt;/li&gt;
&lt;/ol&gt;
&lt;h5&gt;Advanced Functions: 
&lt;/h5&gt;
&lt;p&gt;
The other big difference is that the "Invoke-psake" and "Task" functions have been
converted into Advanced Functions which basically means you can take advantage of
comment help which means you can type help invoke-psake and you will get back real
help with examples.
&lt;/p&gt;
&lt;h5&gt;Minor changes: 
&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;
Coding style is different. 
&lt;li&gt;
Try/Catch is used instead of the "Trap" statement. 
&lt;li&gt;
Got rid of the "exec" function. 
&lt;li&gt;
You can now define "Pre" and "Post" actions for a task. 
&lt;li&gt;
You can define how the task name will be formatted. 
&lt;li&gt;
You can define a "TaskSetup" function that will be executed before every task (took
that from NUnit). 
&lt;li&gt;
You can define a "TaskTearDown" function that will be executed after every task (took
that from NUnit too). 
&lt;li&gt;
Create a global variable called "psake_buildSucceeded" that will be set to true if
the build succeeds - scripts can check this. 
&lt;li&gt;
Also added a "$noexit" switch to Run-Psake so that the function will not use the exit()
function so that you can test a build script at the command line without PS closing
down (the default behavior when the build fails is to call exit(1) so that the calling
code can determine if the build failed or not). 
&lt;li&gt;
The psake-buildTester.ps1 had to be changed slightly in order for it to call the Invoke-psake
function. 
&lt;li&gt;
Added more examples in the .\examples folder for POST conditions, PRE and POST Actions,
etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Happy (build) scripting!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=67421aa0-3548-4cf5-bf04-e0e80e4491e2" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=67421aa0-3548-4cf5-bf04-e0e80e4491e2</comments>
      <category>.NET Tools</category>
      <category>PowerShell</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=395869e2-efab-43df-b334-efcbb24a924b</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=395869e2-efab-43df-b334-efcbb24a924b</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=395869e2-efab-43df-b334-efcbb24a924b</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=395869e2-efab-43df-b334-efcbb24a924b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As many of you know, I am an independent consultant and use my own laptop when possible.
I’ve got all my tools set up the way I like them and everything else that I need to
be productive. Given that I work for multiple clients, I can’t join my laptop to any
particular client’s domain. First is the hassle factor, especially when switching
between different clients within a week. Each domain join requires a domain admin
to authorize the join by typing in his/her credentials when prompted on my laptop.
Second I don’t want a client’s Group Policy being applied to my laptop. Third – and
more importantly – is the non-disclosure agreements that I sign with clients. If I
join my laptop to a domain, the domain admins have full rights to my machine and hence
data from other clients. So domain joining just isn’t an option.
</p>
        <p>
In most cases, not being joined to a client’s domain doesn’t make one iota of difference.
You need to access a network share or printer, browser to it and you will be prompted
for domain credentials. The fact that you’re using different domain credentials to
access the resource from those that you logged in with doesn’t matter one bit. If
you want to expedite the process and not wait for an authentication time-out, you
can utilize NET USE from the command line to tell Windows which credentials you want
to use when accessing certain computers. You can even make them persistent or roll
the whole thing into a batch script that you can execute whenever at a particular
client.
</p>
        <p>
net use \\server /user:domain\username /persistent:yes
</p>
        <p>
Unfortunately this doesn’t work in all cases. One of my longstanding development pet
peeves has been certain tools – I’m looking at you SQL Server Management Studio and
SQL Query Analyzer – that don’t allow you to specify alternate domain credentials
for authentication. For example, SQL Server Management Studio allows you to log into
a SQL Server instance using Windows Authentication or SQL Server Authentication. If
the SQL instance requires Windows Authentication – the recommended configuration –
SQL Server Management Studio uses your logged in credentials. This works well if your
computer is part of the domain, but fails horribly if not. It doesn’t let you specify
alternate credentials or even prompt you for alternate credentials if the log-in fails.
</p>
        <p>
I’ve tried seemingly everything. NET USE doesn’t help here because NET USE is specifically
for network shares.
</p>
        <p>
net use \\sql-server-name /user:domain\username # DOES NOT WORK - Only provides the
domain credentials when accessing shares
</p>
        <p>
RUNAS also fails – either the SHIFT right-click variety or command line – as it tries
to run the command locally as the domain user, who is unknown by your computer because
you’re not part of the domain.
</p>
        <p>
runas /user:domain\username “C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe”
</p>
        <p>
 <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_e30f4280-3389-420f-b2c5-8e62a27f770a.png" width="1029" height="194" /></p>
        <p>
For years (yes, years) I have resorted to using Remote Desktop to log into a domain
computer so that I could run SQL Server Management Studio, used a domain-joined virtual
machine, or begged co-workers to run commands for me. Now I feel foolish because I
stumbled upon a solution that has been built into Windows for years. It is a simple
command line switch for the RUNAS command that I never noticed: /netonly. (Note that
the /netonly flag is not accessible via the SHIFT right-click menu, only via the command
line.)
</p>
        <p>
runas <strong>/netonly</strong> /user:domain\username “C:\Program Files (x86)\Microsoft
SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe”
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_a7c66c0a-6ed9-454d-969f-54fa2df2ed35.png" width="1029" height="194" />
        </p>
        <p>
Success! And SQL Server Management Studio running using /netonly domain credentials.
The command is run as my local user, but uses the supplied domain credentials only
when accessing the network.
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_20f95292-2b68-4151-9369-b1e10d8d9924.png" width="673" height="561" />
        </p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_fed0b1b3-d8a4-4f2b-8598-4b38b2c45326.png" width="479" height="558" />
        </p>
        <p>
I can access remote SQL Servers using Windows Authentication without problem now!
(You’ll have to take my word for it or try it yourself as it would be impolite for
me to show screenshots of me accessing a client’s SQL Server.) Hopefully this makes
some other consultant’s life a little bit easier.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=395869e2-efab-43df-b334-efcbb24a924b" />
      </body>
      <title>TIP: How to Run Programs as a Domain User from a Non-domain Computer</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=395869e2-efab-43df-b334-efcbb24a924b</guid>
      <link>http://www.jameskovacs.com/blog/TIPHowToRunProgramsAsADomainUserFromANondomainComputer.aspx</link>
      <pubDate>Mon, 12 Oct 2009 02:06:30 GMT</pubDate>
      <description>&lt;p&gt;
As many of you know, I am an independent consultant and use my own laptop when possible.
I’ve got all my tools set up the way I like them and everything else that I need to
be productive. Given that I work for multiple clients, I can’t join my laptop to any
particular client’s domain. First is the hassle factor, especially when switching
between different clients within a week. Each domain join requires a domain admin
to authorize the join by typing in his/her credentials when prompted on my laptop.
Second I don’t want a client’s Group Policy being applied to my laptop. Third – and
more importantly – is the non-disclosure agreements that I sign with clients. If I
join my laptop to a domain, the domain admins have full rights to my machine and hence
data from other clients. So domain joining just isn’t an option.
&lt;/p&gt;
&lt;p&gt;
In most cases, not being joined to a client’s domain doesn’t make one iota of difference.
You need to access a network share or printer, browser to it and you will be prompted
for domain credentials. The fact that you’re using different domain credentials to
access the resource from those that you logged in with doesn’t matter one bit. If
you want to expedite the process and not wait for an authentication time-out, you
can utilize NET USE from the command line to tell Windows which credentials you want
to use when accessing certain computers. You can even make them persistent or roll
the whole thing into a batch script that you can execute whenever at a particular
client.
&lt;/p&gt;
&lt;p&gt;
net use \\server /user:domain\username /persistent:yes
&lt;/p&gt;
&lt;p&gt;
Unfortunately this doesn’t work in all cases. One of my longstanding development pet
peeves has been certain tools – I’m looking at you SQL Server Management Studio and
SQL Query Analyzer – that don’t allow you to specify alternate domain credentials
for authentication. For example, SQL Server Management Studio allows you to log into
a SQL Server instance using Windows Authentication or SQL Server Authentication. If
the SQL instance requires Windows Authentication – the recommended configuration –
SQL Server Management Studio uses your logged in credentials. This works well if your
computer is part of the domain, but fails horribly if not. It doesn’t let you specify
alternate credentials or even prompt you for alternate credentials if the log-in fails.
&lt;/p&gt;
&lt;p&gt;
I’ve tried seemingly everything. NET USE doesn’t help here because NET USE is specifically
for network shares.
&lt;/p&gt;
&lt;p&gt;
net use \\sql-server-name /user:domain\username # DOES NOT WORK - Only provides the
domain credentials when accessing shares
&lt;/p&gt;
&lt;p&gt;
RUNAS also fails – either the SHIFT right-click variety or command line – as it tries
to run the command locally as the domain user, who is unknown by your computer because
you’re not part of the domain.
&lt;/p&gt;
&lt;p&gt;
runas /user:domain\username “C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe”
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_e30f4280-3389-420f-b2c5-8e62a27f770a.png" width="1029" height="194"&gt; 
&lt;/p&gt;
&lt;p&gt;
For years (yes, years) I have resorted to using Remote Desktop to log into a domain
computer so that I could run SQL Server Management Studio, used a domain-joined virtual
machine, or begged co-workers to run commands for me. Now I feel foolish because I
stumbled upon a solution that has been built into Windows for years. It is a simple
command line switch for the RUNAS command that I never noticed: /netonly. (Note that
the /netonly flag is not accessible via the SHIFT right-click menu, only via the command
line.)
&lt;/p&gt;
&lt;p&gt;
runas &lt;strong&gt;/netonly&lt;/strong&gt; /user:domain\username “C:\Program Files (x86)\Microsoft
SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe”
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_a7c66c0a-6ed9-454d-969f-54fa2df2ed35.png" width="1029" height="194"&gt;
&lt;/p&gt;
&lt;p&gt;
Success! And SQL Server Management Studio running using /netonly domain credentials.
The command is run as my local user, but uses the supplied domain credentials only
when accessing the network.
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_20f95292-2b68-4151-9369-b1e10d8d9924.png" width="673" height="561"&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/78bd8e997379_11797/image_fed0b1b3-d8a4-4f2b-8598-4b38b2c45326.png" width="479" height="558"&gt; 
&lt;/p&gt;
&lt;p&gt;
I can access remote SQL Servers using Windows Authentication without problem now!
(You’ll have to take my word for it or try it yourself as it would be impolite for
me to show screenshots of me accessing a client’s SQL Server.) Hopefully this makes
some other consultant’s life a little bit easier.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=395869e2-efab-43df-b334-efcbb24a924b" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=395869e2-efab-43df-b334-efcbb24a924b</comments>
      <category>Miscellaneous</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=9206ac28-2798-45fb-8c6c-a83d18d56359</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=9206ac28-2798-45fb-8c6c-a83d18d56359</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=9206ac28-2798-45fb-8c6c-a83d18d56359</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9206ac28-2798-45fb-8c6c-a83d18d56359</wfw:commentRss>
      <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="Darth Vader" border="0" alt="Darth Vader" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/EdmontonCodeCampWrapupDoingMorewithLess_110AA/image5_9ef1ec30-8969-4c10-b969-817339d5e4b0.png" width="240" height="193" />The <a href="http://edmontoncodecamp.com/" target="_blank">Edmonton
Code Camp</a> was a lot of fun. It was wonderful to catch up with friends – old and
new – over lunch and dinner. Thanks to <a href="http://www.haveyougotwoods.com/" target="_blank">Dave
Woods</a> for inviting me.
</p>
        <p>
I have been enjoying sharing my ideas about convention-over-configuration and how
it can simplify software development. You expend some serious brain power over figuring
out how to enable your application-specific conventions, but everything after that
flows easily and without repetition. You end up doing more with less code. During
the talk, I demonstrated how frameworks like Fluent NHibernate, AutoMapper, Castle
Windsor, ASP.NET MVC, and jQuery support this style of development. (Links below.)
I only scratched the surface though. Other frameworks like StructureMap and FubuMVC
also are heavily convention-based. With a bit of creative thinking, you can use these
techniques in your own code to reduce duplication and increase flexibility.
</p>
        <ul>
          <li>
            <a href="http://www.fluentnhibernate.org" target="_blank">Fluent NHibernate</a>
          </li>
          <li>
            <a href="http://nhforge.org" target="_blank">NHForge </a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AutoMapper" target="_blank">AutoMapper </a>
          </li>
          <li>
            <a href="http://castleproject.org" target="_blank">Castle Windsor </a>
          </li>
          <li>
            <a href="http://asp.net/mvc" target="_blank">ASP.NET MVC</a>
          </li>
          <li>
            <a href="http://jquery.com" target="_blank">jQuery</a> &amp; <a href="http://jqueryui.com" target="_blank">jQuery
UI </a></li>
        </ul>
        <p>
For those of you who attended, you’ll realize why Darth Vader accompanies this post.
For everyone else, you’ll have to check out the slidedeck and code:
</p>
        <p>
          <a href="http://jameskovacs.com/downloads/DoingMoreWithLess.pptx" target="_blank">PPTX</a> | <a href="http://jameskovacs.com/downloads/DoingMoreWithLess-FakeVader.zip" target="_blank">Code</a></p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=9206ac28-2798-45fb-8c6c-a83d18d56359" />
      </body>
      <title>Edmonton Code Camp Wrap-up: Doing More with Less</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=9206ac28-2798-45fb-8c6c-a83d18d56359</guid>
      <link>http://www.jameskovacs.com/blog/EdmontonCodeCampWrapupDoingMoreWithLess.aspx</link>
      <pubDate>Mon, 21 Sep 2009 01:27:23 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="Darth Vader" border="0" alt="Darth Vader" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/EdmontonCodeCampWrapupDoingMorewithLess_110AA/image5_9ef1ec30-8969-4c10-b969-817339d5e4b0.png" width="240" height="193"&gt;The &lt;a href="http://edmontoncodecamp.com/" target="_blank"&gt;Edmonton
Code Camp&lt;/a&gt; was a lot of fun. It was wonderful to catch up with friends – old and
new – over lunch and dinner. Thanks to &lt;a href="http://www.haveyougotwoods.com/" target="_blank"&gt;Dave
Woods&lt;/a&gt; for inviting me.
&lt;/p&gt;
&lt;p&gt;
I have been enjoying sharing my ideas about convention-over-configuration and how
it can simplify software development. You expend some serious brain power over figuring
out how to enable your application-specific conventions, but everything after that
flows easily and without repetition. You end up doing more with less code. During
the talk, I demonstrated how frameworks like Fluent NHibernate, AutoMapper, Castle
Windsor, ASP.NET MVC, and jQuery support this style of development. (Links below.)
I only scratched the surface though. Other frameworks like StructureMap and FubuMVC
also are heavily convention-based. With a bit of creative thinking, you can use these
techniques in your own code to reduce duplication and increase flexibility.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.fluentnhibernate.org" target="_blank"&gt;Fluent NHibernate&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://nhforge.org" target="_blank"&gt;NHForge &lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://www.codeplex.com/AutoMapper" target="_blank"&gt;AutoMapper &lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://castleproject.org" target="_blank"&gt;Castle Windsor &lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://asp.net/mvc" target="_blank"&gt;ASP.NET MVC&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://jquery.com" target="_blank"&gt;jQuery&lt;/a&gt; &amp;amp; &lt;a href="http://jqueryui.com" target="_blank"&gt;jQuery
UI &lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
For those of you who attended, you’ll realize why Darth Vader accompanies this post.
For everyone else, you’ll have to check out the slidedeck and code:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://jameskovacs.com/downloads/DoingMoreWithLess.pptx" target="_blank"&gt;PPTX&lt;/a&gt; | &lt;a href="http://jameskovacs.com/downloads/DoingMoreWithLess-FakeVader.zip" target="_blank"&gt;Code&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=9206ac28-2798-45fb-8c6c-a83d18d56359" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=9206ac28-2798-45fb-8c6c-a83d18d56359</comments>
      <category>Presentations</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=35fe9649-1eff-4172-8ec0-438be45aaae6</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=35fe9649-1eff-4172-8ec0-438be45aaae6</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=35fe9649-1eff-4172-8ec0-438be45aaae6</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=35fe9649-1eff-4172-8ec0-438be45aaae6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
At first glance, PowerShell appears to be yet another command shell with the interesting
twist that you pipe objects between commands rather than strings. But there is more
to PowerShell than that. One fascinating area is PowerShell Providers. (PowerShell
Providers aren’t anything new as they’ve been there since v1. So I’m not the first
– nor will I be the last – to blog about them, but hopefully some folks starting out
with PowerShell find this useful…)
</p>
        <p>
We’ll start with a simple example using “ls” to list the contents of a directory:
</p>
        <p>
ls c:\
</p>
        <p>
Now “ls” is just a two-letter version of “dir” and both are aliases for “Get-ChildItem”.
How do I know that?
</p>
        <p>
ls alias:
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_31b63a7e-e40b-4505-8af9-7f0e10fb08bc.png" width="781" height="379" />
        </p>
        <p>
This prints out all current aliases. That funky “alias:” is a PowerShell provider.
If you want a specific alias, you can “ls alias:ls” or “ls alias:dir”.
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_6c78cab1-6aa6-4503-8114-8b6562aee871.png" width="733" height="295" />
        </p>
        <p>
To get a list of currently installed PowerShell providers, you can use <strong>Get-PSProvider</strong>:
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_827bbdd5-a9b7-4400-9435-0e712a60e90f.png" width="781" height="283" />
        </p>
        <p>
You should notice a few interesting entries there. You want a list of environment
variables? The Environment provider does the trick:
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_6be74221-d00d-4d7b-8737-2d5130bad4cc.png" width="1029" height="662" />
        </p>
        <p>
Note that providers aren’t read-only. Let’s say you want to temporarily add a directory
to your path. In cmd.exe, you would do the following:
</p>
        <p>
set PATH = %PATH%;&lt;EXTRA_DIR&gt;;
</p>
        <p>
In PowerShell, you use the Environment provider:
</p>
        <p>
$env:PATH += ";&lt;EXTRA_DIR&gt;";"
</p>
        <p>
Notice the env: prefix that tells PowerShell that the variable is handled by the Environment
provider. (Notice above that “Env” is listed as the “drive” for the Environment provider.)
</p>
        <p>
Let’s explore some more…
</p>
        <p>
 
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_b4f1d0c9-ddb5-4521-bece-02ca951a09f6.png" width="1029" height="614" />
        </p>
        <p>
Notice that changing drive letters is actually handled by the Function provider and
are just commands.
</p>
        <p>
It gets more interesting with the Registry provider through which you can access HKEY_LOCAL_MACHINE
via hklm: and HKEY_CURRENT_USER via hkcu:.
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_38a35500-6041-46af-8921-39f5927dce2c.png" width="573" height="331" />
        </p>
        <p>
You even get tab completion while typing. (Try ls hkcu:&lt;TAB&gt;&lt;TAB&gt;&lt;TAB&gt;
to see various subkeys for HKEY_CURRENT_USER.) And assuming that you have write permission
to the registry keys, you can set them too!
</p>
        <p>
PowerShell providers aren’t limited to those shipped by Microsoft. You can in fact <a href="http://msdn.microsoft.com/en-us/library/ms714636(VS.85).aspx" target="_blank">write
your own</a>, though I’ve never tried it. People have written their own providers
for everything from SharePoint to Subversion.
</p>
        <p>
So go check out PowerShell providers. Happy Scripting!
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=35fe9649-1eff-4172-8ec0-438be45aaae6" />
      </body>
      <title>PowerShell Tip: Providers</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=35fe9649-1eff-4172-8ec0-438be45aaae6</guid>
      <link>http://www.jameskovacs.com/blog/PowerShellTipProviders.aspx</link>
      <pubDate>Tue, 15 Sep 2009 04:47:44 GMT</pubDate>
      <description>&lt;p&gt;
At first glance, PowerShell appears to be yet another command shell with the interesting
twist that you pipe objects between commands rather than strings. But there is more
to PowerShell than that. One fascinating area is PowerShell Providers. (PowerShell
Providers aren’t anything new as they’ve been there since v1. So I’m not the first
– nor will I be the last – to blog about them, but hopefully some folks starting out
with PowerShell find this useful…)
&lt;/p&gt;
&lt;p&gt;
We’ll start with a simple example using “ls” to list the contents of a directory:
&lt;/p&gt;
&lt;p&gt;
ls c:\
&lt;/p&gt;
&lt;p&gt;
Now “ls” is just a two-letter version of “dir” and both are aliases for “Get-ChildItem”.
How do I know that?
&lt;/p&gt;
&lt;p&gt;
ls alias:
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_31b63a7e-e40b-4505-8af9-7f0e10fb08bc.png" width="781" height="379"&gt; 
&lt;/p&gt;
&lt;p&gt;
This prints out all current aliases. That funky “alias:” is a PowerShell provider.
If you want a specific alias, you can “ls alias:ls” or “ls alias:dir”.
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_6c78cab1-6aa6-4503-8114-8b6562aee871.png" width="733" height="295"&gt; 
&lt;/p&gt;
&lt;p&gt;
To get a list of currently installed PowerShell providers, you can use &lt;strong&gt;Get-PSProvider&lt;/strong&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_827bbdd5-a9b7-4400-9435-0e712a60e90f.png" width="781" height="283"&gt; 
&lt;/p&gt;
&lt;p&gt;
You should notice a few interesting entries there. You want a list of environment
variables? The Environment provider does the trick:
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_6be74221-d00d-4d7b-8737-2d5130bad4cc.png" width="1029" height="662"&gt; 
&lt;/p&gt;
&lt;p&gt;
Note that providers aren’t read-only. Let’s say you want to temporarily add a directory
to your path. In cmd.exe, you would do the following:
&lt;/p&gt;
&lt;p&gt;
set PATH = %PATH%;&amp;lt;EXTRA_DIR&amp;gt;;
&lt;/p&gt;
&lt;p&gt;
In PowerShell, you use the Environment provider:
&lt;/p&gt;
&lt;p&gt;
$env:PATH += ";&amp;lt;EXTRA_DIR&amp;gt;";"
&lt;/p&gt;
&lt;p&gt;
Notice the env: prefix that tells PowerShell that the variable is handled by the Environment
provider. (Notice above that “Env” is listed as the “drive” for the Environment provider.)
&lt;/p&gt;
&lt;p&gt;
Let’s explore some more…
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_b4f1d0c9-ddb5-4521-bece-02ca951a09f6.png" width="1029" height="614"&gt; 
&lt;/p&gt;
&lt;p&gt;
Notice that changing drive letters is actually handled by the Function provider and
are just commands.
&lt;/p&gt;
&lt;p&gt;
It gets more interesting with the Registry provider through which you can access HKEY_LOCAL_MACHINE
via hklm: and HKEY_CURRENT_USER via hkcu:.
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/PowerShellProviders_C8DC/image_38a35500-6041-46af-8921-39f5927dce2c.png" width="573" height="331"&gt; 
&lt;/p&gt;
&lt;p&gt;
You even get tab completion while typing. (Try ls hkcu:&amp;lt;TAB&amp;gt;&amp;lt;TAB&amp;gt;&amp;lt;TAB&amp;gt;
to see various subkeys for HKEY_CURRENT_USER.) And assuming that you have write permission
to the registry keys, you can set them too!
&lt;/p&gt;
&lt;p&gt;
PowerShell providers aren’t limited to those shipped by Microsoft. You can in fact &lt;a href="http://msdn.microsoft.com/en-us/library/ms714636(VS.85).aspx" target="_blank"&gt;write
your own&lt;/a&gt;, though I’ve never tried it. People have written their own providers
for everything from SharePoint to Subversion.
&lt;/p&gt;
&lt;p&gt;
So go check out PowerShell providers. Happy Scripting!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=35fe9649-1eff-4172-8ec0-438be45aaae6" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=35fe9649-1eff-4172-8ec0-438be45aaae6</comments>
      <category>PowerShell</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=71d94924-61c3-4251-ad7b-76a28d776241</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=71d94924-61c3-4251-ad7b-76a28d776241</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=71d94924-61c3-4251-ad7b-76a28d776241</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=71d94924-61c3-4251-ad7b-76a28d776241</wfw:commentRss>
      <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=".NET Rocks" border="0" alt=".NET Rocks" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/d7d.NETRocks475JamesKovacsonConventionov_1271F/image_be9dff48-d03a-4ed8-9d54-c185e35e4136.png" width="472" height="128" />A
few weeks ago Richard and Carl invited me to appear on .NET Rocks again and I jumped
at the chance. I had a great time talking to them about doing more with less (writing
less, but smarter code) and how convention-over-configuration changes the way that
we develop software for the better. Check it out <a href="http://www.dotnetrocks.com/default.aspx?showNum=475" target="_blank">.NET
Rocks #475</a> featuring yours truly!
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=71d94924-61c3-4251-ad7b-76a28d776241" />
      </body>
      <title>.NET Rocks #475: James Kovacs on Convention-over-Configuration</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=71d94924-61c3-4251-ad7b-76a28d776241</guid>
      <link>http://www.jameskovacs.com/blog/NETRocks475JamesKovacsOnConventionoverConfiguration.aspx</link>
      <pubDate>Wed, 26 Aug 2009 03:14:02 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=".NET Rocks" border="0" alt=".NET Rocks" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/d7d.NETRocks475JamesKovacsonConventionov_1271F/image_be9dff48-d03a-4ed8-9d54-c185e35e4136.png" width="472" height="128"&gt;A
few weeks ago Richard and Carl invited me to appear on .NET Rocks again and I jumped
at the chance. I had a great time talking to them about doing more with less (writing
less, but smarter code) and how convention-over-configuration changes the way that
we develop software for the better. Check it out &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=475" target="_blank"&gt;.NET
Rocks #475&lt;/a&gt; featuring yours truly!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=71d94924-61c3-4251-ad7b-76a28d776241" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=71d94924-61c3-4251-ad7b-76a28d776241</comments>
      <category>Podcast</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=5e514e33-5a57-4224-bfc7-0c54243ee842</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=5e514e33-5a57-4224-bfc7-0c54243ee842</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=5e514e33-5a57-4224-bfc7-0c54243ee842</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5e514e33-5a57-4224-bfc7-0c54243ee842</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WrapupDoingMorewithLess_12FA4/image_212f1b35-1552-4fc8-a41e-163d5c7a0419.png" width="240" height="193" /> Thanks
to everyone who came out to <a href="http://www.jameskovacs.com/blog/DoingMoreWithLessAcceleratingDevelopmentUsingConventionoverConfiguration.aspx" target="_blank">my
presentation</a> last night at the Calgary .NET User Group. I enjoyed talking using
convention-over-configuration techniques for doing more with less code. I demonstrated
how frameworks like Fluent NHibernate, AutoMapper, Castle Windsor, ASP.NET MVC, and
jQuery support this style of development. (Links below.) I only scratched the surface
though. Other frameworks like StructureMap and FubuMVC also are heavily convention-based.
With a bit of creative thinking, you can use these techniques in your own code to
reduce duplication and increase flexibility.
</p>
        <ul>
          <li>
            <a href="http://www.fluentnhibernate.org" target="_blank">Fluent NHibernate</a>
          </li>
          <li>
            <a href="http://nhforge.org" target="_blank">NHForge </a>
          </li>
          <li>
            <a href="http://www.codeplex.com/AutoMapper" target="_blank">AutoMapper </a>
          </li>
          <li>
            <a href="http://castleproject.org" target="_blank">Castle Windsor </a>
          </li>
          <li>
            <a href="http://asp.net/mvc" target="_blank">ASP.NET MVC</a>
          </li>
          <li>
            <a href="http://jquery.com" target="_blank">jQuery</a> &amp; <a href="http://jqueryui.com" target="_blank">jQuery
UI </a></li>
        </ul>
        <p>
For those of you who attended, you’ll realize why Darth Vader accompanies this post.
For everyone else, you’ll have to check out the slidedeck and code:
</p>
        <p>
          <a href="http://jameskovacs.com/downloads/DoingMoreWithLess.pptx" target="_blank">PPTX</a> | <a href="http://jameskovacs.com/downloads/DoingMoreWithLess-FakeVader.zip" target="_blank">Code</a></p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=5e514e33-5a57-4224-bfc7-0c54243ee842" />
      </body>
      <title>Wrap-up: Doing More with Less</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=5e514e33-5a57-4224-bfc7-0c54243ee842</guid>
      <link>http://www.jameskovacs.com/blog/WrapupDoingMoreWithLess.aspx</link>
      <pubDate>Thu, 20 Aug 2009 04:05:02 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="right" src="http://www.jameskovacs.com/blog/content/binary/WindowsLiveWriter/WrapupDoingMorewithLess_12FA4/image_212f1b35-1552-4fc8-a41e-163d5c7a0419.png" width="240" height="193"&gt; Thanks
to everyone who came out to &lt;a href="http://www.jameskovacs.com/blog/DoingMoreWithLessAcceleratingDevelopmentUsingConventionoverConfiguration.aspx" target="_blank"&gt;my
presentation&lt;/a&gt; last night at the Calgary .NET User Group. I enjoyed talking using
convention-over-configuration techniques for doing more with less code. I demonstrated
how frameworks like Fluent NHibernate, AutoMapper, Castle Windsor, ASP.NET MVC, and
jQuery support this style of development. (Links below.) I only scratched the surface
though. Other frameworks like StructureMap and FubuMVC also are heavily convention-based.
With a bit of creative thinking, you can use these techniques in your own code to
reduce duplication and increase flexibility.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.fluentnhibernate.org" target="_blank"&gt;Fluent NHibernate&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://nhforge.org" target="_blank"&gt;NHForge &lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://www.codeplex.com/AutoMapper" target="_blank"&gt;AutoMapper &lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://castleproject.org" target="_blank"&gt;Castle Windsor &lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://asp.net/mvc" target="_blank"&gt;ASP.NET MVC&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://jquery.com" target="_blank"&gt;jQuery&lt;/a&gt; &amp;amp; &lt;a href="http://jqueryui.com" target="_blank"&gt;jQuery
UI &lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
For those of you who attended, you’ll realize why Darth Vader accompanies this post.
For everyone else, you’ll have to check out the slidedeck and code:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://jameskovacs.com/downloads/DoingMoreWithLess.pptx" target="_blank"&gt;PPTX&lt;/a&gt; | &lt;a href="http://jameskovacs.com/downloads/DoingMoreWithLess-FakeVader.zip" target="_blank"&gt;Code&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=5e514e33-5a57-4224-bfc7-0c54243ee842" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=5e514e33-5a57-4224-bfc7-0c54243ee842</comments>
      <category>Presentations</category>
    </item>
    <item>
      <trackback:ping>http://www.jameskovacs.com/blog/Trackback.aspx?guid=58105629-fc3c-487c-94a3-f5b745c856c7</trackback:ping>
      <pingback:server>http://www.jameskovacs.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.jameskovacs.com/blog/PermaLink.aspx?guid=58105629-fc3c-487c-94a3-f5b745c856c7</pingback:target>
      <dc:creator>James Kovacs</dc:creator>
      <wfw:comment>http://www.jameskovacs.com/blog/CommentView.aspx?guid=58105629-fc3c-487c-94a3-f5b745c856c7</wfw:comment>
      <wfw:commentRss>http://www.jameskovacs.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=58105629-fc3c-487c-94a3-f5b745c856c7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ll be presenting at the Calgary .NET User Group next week. Come out for a fun discussion
and lively discussion on improving your application development using convention-over-configuration
techniques. 
</p>
        <table>
          <tbody>
            <tr>
              <td>
Topic:</td>
              <td>
                <strong>Doing More With Less: Accelerating Development Using Convention-over-Configuration</strong>
              </td>
            </tr>
            <tr>
              <td>
Speaker:</td>
              <td>
James Kovacs</td>
            </tr>
            <tr>
              <td>
Date:</td>
              <td>
18-August-2009</td>
            </tr>
            <tr>
              <td>
Location:</td>
              <td>
Nexen Conference Center<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>
            <tr>
              <td>
Registration:</td>
              <td>
5:00 pm - 5:30 pm</td>
            </tr>
            <tr>
              <td>
Presentation:</td>
              <td>
5:30 pm - ???</td>
            </tr>
          </tbody>
        </table>
        <h3>Abstract
</h3>
        <p>
As developers, we spend an inordinate amount of time writing "glue code". We write
code to transform database rows to domain objects... domain objects to view-models
or DTOs... We write code to configure inversion of control containers and wire dependencies
together. We write code to style our UIs and respond to UI events. Wouldn't it be
nice if this could happen automagically for us? This session will look at using convention-based
approaches using Fluent NHibernate, AutoMapper, Castle Windsor, and jQuery to reduce
the amount of repetitive code and accelerate application development.
</p>
        <img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=58105629-fc3c-487c-94a3-f5b745c856c7" />
      </body>
      <title>Doing More With Less: Accelerating Development Using Convention-over-Configuration</title>
      <guid isPermaLink="false">http://www.jameskovacs.com/blog/PermaLink.aspx?guid=58105629-fc3c-487c-94a3-f5b745c856c7</guid>
      <link>http://www.jameskovacs.com/blog/DoingMoreWithLessAcceleratingDevelopmentUsingConventionoverConfiguration.aspx</link>
      <pubDate>Thu, 13 Aug 2009 09:49:25 GMT</pubDate>
      <description>&lt;p&gt;
I’ll be presenting at the Calgary .NET User Group next week. Come out for a fun discussion
and lively discussion on improving your application development using convention-over-configuration
techniques. 
&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
Topic:&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Doing More With Less: Accelerating Development Using Convention-over-Configuration&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Speaker:&lt;/td&gt;
&lt;td&gt;
James Kovacs&lt;/td&gt;
&lt;tr&gt;
&lt;td&gt;
Date:&lt;/td&gt;
&lt;td&gt;
18-August-2009&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Location:&lt;/td&gt;
&lt;td&gt;
Nexen Conference Center&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;tr&gt;
&lt;td&gt;
Registration:&lt;/td&gt;
&lt;td&gt;
5:00 pm - 5:30 pm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Presentation:&lt;/td&gt;
&lt;td&gt;
5:30 pm - ???&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Abstract
&lt;/h3&gt;
&lt;p&gt;
As developers, we spend an inordinate amount of time writing "glue code". We write
code to transform database rows to domain objects... domain objects to view-models
or DTOs... We write code to configure inversion of control containers and wire dependencies
together. We write code to style our UIs and respond to UI events. Wouldn't it be
nice if this could happen automagically for us? This session will look at using convention-based
approaches using Fluent NHibernate, AutoMapper, Castle Windsor, and jQuery to reduce
the amount of repetitive code and accelerate application development.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.jameskovacs.com/blog/aggbug.ashx?id=58105629-fc3c-487c-94a3-f5b745c856c7" /&gt;</description>
      <comments>http://www.jameskovacs.com/blog/CommentView.aspx?guid=58105629-fc3c-487c-94a3-f5b745c856c7</comments>
      <category>Presentations</category>
    </item>
    <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</category>
      <category>Courses</category>
      <category>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</category>
      <category>Agile</category>
      <category>ASP.NET</category>
      <category>Screencast</category>
      <category>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</category>
      <category>Presentations</category>
    </item>
  </channel>
</rss>