<?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>Kirk Jackson's Page of Words - .NET</title>
    <link>http://pageofwords.com/blog/</link>
    <description>Run the ink across this page of words</description>
    <language>en-us</language>
    <copyright>Kirk Jackson</copyright>
    <lastBuildDate>Wed, 09 Mar 2011 08:17:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>kirkj@paradise.net.nz</managingEditor>
    <webMaster>kirkj@paradise.net.nz</webMaster>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=b0f679e5-80bd-4186-a11e-7f32648766ff</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b0f679e5-80bd-4186-a11e-7f32648766ff</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">This month I gave a similar talk to two
user groups. The <a href="http://www.owasp.org/index.php/New_Zealand">OWASP Wellington</a> (and
Auckland over video conference), and the <a href="http://www.dot.net.nz/UserGroupPages/WellingtonNET.aspx">Wellington
.NET user group</a> both invited me to speak on: "I know what you did last summer;
The latest from the world of web hacks".<br /><br />
This was a fun talk to deliver. The focus was on recent web 'hacks' that had occurred
in the past few months (I used a pretty general definition of 'hack'), but the main
discussion was around the lessons that we could learn from these issues and what we
could draw back into our own projects.<br /><br />
I think this talk had the most amount of interaction out of any of my previous talks.
There was lively discussion about what the root cause of the problem was, whether
it was even fixable at all, and we lamented the effects of 'users' :)<br /><br />
Since the .NET talk was a superset of the OWASP one (it was longer), I've included
those slides below:<br /><p></p><a href="http://pageofwords.com/blog/content/binary/2011-03-09-WellingtonNet.pdf">2011-03-09-WellingtonNet.pdf
(2.07 MB)</a><br /><br />
Thanks for coming!<br /><br />
Kirk<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b0f679e5-80bd-4186-a11e-7f32648766ff" /></body>
      <title>Recent talks - I know what you did last summer</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</guid>
      <link>http://pageofwords.com/blog/2011/03/09/RecentTalksIKnowWhatYouDidLastSummer.aspx</link>
      <pubDate>Wed, 09 Mar 2011 08:17:00 GMT</pubDate>
      <description>This month I gave a similar talk to two user groups. The &lt;a href="http://www.owasp.org/index.php/New_Zealand"&gt;OWASP
Wellington&lt;/a&gt; (and Auckland over video conference), and the &lt;a href="http://www.dot.net.nz/UserGroupPages/WellingtonNET.aspx"&gt;Wellington
.NET user group&lt;/a&gt; both invited me to speak on: "I know what you did last summer;
The latest from the world of web hacks".&lt;br&gt;
&lt;br&gt;
This was a fun talk to deliver. The focus was on recent web 'hacks' that had occurred
in the past few months (I used a pretty general definition of 'hack'), but the main
discussion was around the lessons that we could learn from these issues and what we
could draw back into our own projects.&lt;br&gt;
&lt;br&gt;
I think this talk had the most amount of interaction out of any of my previous talks.
There was lively discussion about what the root cause of the problem was, whether
it was even fixable at all, and we lamented the effects of 'users' :)&lt;br&gt;
&lt;br&gt;
Since the .NET talk was a superset of the OWASP one (it was longer), I've included
those slides below:&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/2011-03-09-WellingtonNet.pdf"&gt;2011-03-09-WellingtonNet.pdf
(2.07 MB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Thanks for coming!&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b0f679e5-80bd-4186-a11e-7f32648766ff" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,b0f679e5-80bd-4186-a11e-7f32648766ff.aspx</comments>
      <category>.NET;OWASP;Security;UserGroup;Web</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=47180a1e-aa67-416a-9e0e-ab0b0584c010</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=47180a1e-aa67-416a-9e0e-ab0b0584c010</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thanks to those user group members and Xero partners that came along to our talk today.
</p>
        <p>
We covered the two vulnerabilities released last week, the workarounds, and the patches
that were released this morning.
</p>
        <p>
Here are the slides: <a href="http://pageofwords.com/blog/content/binary/KirkJackson-PaddingOracle.pdf">KirkJackson-PaddingOracle.pdf
(641.14 KB)</a></p>
        <p>
All ASP.NET applications are affected. The best thing to do is <a href="http://blogs.technet.com/b/msrc/archive/2010/09/28/ms10-070-released-out-of-band-today.aspx">install
the patches released this morning</a>. 
</p>
        <p>
          <b>
            <br />
          </b>
        </p>
        <p>
          <b>Problem &amp; bulletins:</b>
        </p>
        <p>
          <a href="http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx">Security
bulletin MS10-070</a>
        </p>
        <p>
          <a href="http://weblogs.asp.net/scottgu/archive/tags/Security/default.aspx"> Useful
info on ScottGu's blog<br /></a>
        </p>
        <p>
          <a href="http://forums.asp.net/1233.aspx">Forum about the security vulnerability</a>
        </p>
        <p>
          <a href="http://www.youtube.com/watch?v=mP6mKLh1FBw">Video of a site exploit</a>,
even with the workarounds applied 
</p>
        <p>
          <b> Patch: </b>
        </p>
        <p>
          <a href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx">Scott
Gu's writeup of the patch</a>
        </p>
        <p>
          <a href="http://musingmarc.blogspot.com/2010/09/ms10-070-post-mortem-analysis-of-patch.html">Post-mortem
of the patch - Marc Brooks</a>
        </p>
        <p>
How to <a href="http://support.microsoft.com/kb/2425938"> configure the new patched
features</a></p>
        <p>
          <b>Research:</b>
        </p>
        <p>
          <a href="http://twitter.com/julianor">Juliano Rizzo</a> and <a href="http://twitter.com/thaidn">Thai
Duong</a> and their <a href="http://netifera.com/research/">POET tool</a></p>
        <p>
          <a href="http://www.gdssecurity.com/l/b/2010/09/28/new-version-of-padbuster-available-for-download/"> Padbuster
tool</a> (including a <a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/">great
writeup of Padding Oracles)</a></p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=47180a1e-aa67-416a-9e0e-ab0b0584c010" />
      </body>
      <title>ASP.NET Vulnerability - Slides</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</guid>
      <link>http://pageofwords.com/blog/2010/09/29/ASPNETVulnerabilitySlides.aspx</link>
      <pubDate>Wed, 29 Sep 2010 08:25:39 GMT</pubDate>
      <description>&lt;p&gt;
Thanks to those user group members and Xero partners that came along to our talk today.
&lt;/p&gt;
&lt;p&gt;
We covered the two vulnerabilities released last week, the workarounds, and the patches
that were released this morning.
&lt;/p&gt;
&lt;p&gt;
Here are the slides: &lt;a href="http://pageofwords.com/blog/content/binary/KirkJackson-PaddingOracle.pdf"&gt;KirkJackson-PaddingOracle.pdf
(641.14 KB)&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
All ASP.NET applications are affected. The best thing to do is &lt;a href="http://blogs.technet.com/b/msrc/archive/2010/09/28/ms10-070-released-out-of-band-today.aspx"&gt;install
the patches released this morning&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt; 
&lt;br&gt;
&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Problem &amp;amp; bulletins:&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/technet/security/bulletin/ms10-070.mspx"&gt;Security
bulletin MS10-070&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/tags/Security/default.aspx"&gt; Useful
info on ScottGu's blog&lt;br&gt;
&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://forums.asp.net/1233.aspx"&gt;Forum about the security vulnerability&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.youtube.com/watch?v=mP6mKLh1FBw"&gt;Video of a site exploit&lt;/a&gt;,
even with the workarounds applied 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt; Patch: &lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx"&gt;Scott
Gu's writeup of the patch&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://musingmarc.blogspot.com/2010/09/ms10-070-post-mortem-analysis-of-patch.html"&gt;Post-mortem
of the patch - Marc Brooks&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
How to &lt;a href="http://support.microsoft.com/kb/2425938"&gt; configure the new patched
features&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Research:&lt;/b&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://twitter.com/julianor"&gt;Juliano Rizzo&lt;/a&gt; and &lt;a href="http://twitter.com/thaidn"&gt;Thai
Duong&lt;/a&gt; and their &lt;a href="http://netifera.com/research/"&gt;POET tool&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.gdssecurity.com/l/b/2010/09/28/new-version-of-padbuster-available-for-download/"&gt; Padbuster
tool&lt;/a&gt; (including a &lt;a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/"&gt;great
writeup of Padding Oracles)&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=47180a1e-aa67-416a-9e0e-ab0b0584c010" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,47180a1e-aa67-416a-9e0e-ab0b0584c010.aspx</comments>
      <category>.NET;Security;Xero</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=54b58629-7704-4ddb-b39a-8e12e283631e</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=54b58629-7704-4ddb-b39a-8e12e283631e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">If you're in Wellington this Wednesday
and you develop, maintain, manage or host ASP.NET or SharePoint websites, please do
come along to hear about the security vulnerability disclosed a week ago:<br /><br /><a href="http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321">http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321</a><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=54b58629-7704-4ddb-b39a-8e12e283631e" /></body>
      <title>ASP.NET vulnerability - briefing in Wellington this Wednesday</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</guid>
      <link>http://pageofwords.com/blog/2010/09/27/ASPNETVulnerabilityBriefingInWellingtonThisWednesday.aspx</link>
      <pubDate>Mon, 27 Sep 2010 09:08:47 GMT</pubDate>
      <description>If you're in Wellington this Wednesday and you develop, maintain, manage or host ASP.NET or SharePoint websites, please do come along to hear about the security vulnerability disclosed a week ago:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321"&gt;http://www.dot.net.nz/Lists/Events%20Calendar/DispForm.aspx?ID=321&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=54b58629-7704-4ddb-b39a-8e12e283631e" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,54b58629-7704-4ddb-b39a-8e12e283631e.aspx</comments>
      <category>.NET;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=249a58ec-4b74-4bdb-beaa-8b704b90e9d3</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,249a58ec-4b74-4bdb-beaa-8b704b90e9d3.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,249a58ec-4b74-4bdb-beaa-8b704b90e9d3.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=249a58ec-4b74-4bdb-beaa-8b704b90e9d3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Visual Studio 2010 will have <a href="http://weblogs.asp.net/scottgu/archive/2009/08/31/multi-monitor-support-vs-2010-and-net-4-series.aspx">better
support for a multi-monitor setup</a>, but it's possible to get part of the way in
2008 already.
</p>
        <p>
Toolbars and property windows (e.g. Solution Explorer, Class View) can be dragged
into separate windows (2010 will add the ability to drag documents into separate windows
too):
</p>
        <p>
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Floating windows" border="0" alt="Floating windows" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_5.png" width="644" height="383" />
        </p>
        <p>
Window positioning gets a bit weird when you switch from one monitor to another, or
change resolutions - a common occurrence when you're a laptop user docking and un-docking.
</p>
        <p>
You can create two settings files, one for your single monitor layout, and one for
your multi-monitor layout, and use them when starting Visual Studio 2008:
</p>
        <ol>
          <li>
Arrange your windows the way you like them 
</li>
          <li>
Go to <strong>Tools </strong>&gt; <strong>Import and Export Settings</strong> &gt; <strong>Export
selected environment settings</strong></li>
          <li>
You get a great tree-view of every possible setting category in Visual Studio. Click
the top node to deselect everything, and scroll down and select only <strong>General
Settings </strong>&gt; <strong>Window Layouts</strong>: 
<br /><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_10.png" width="244" height="206" /></li>
          <li>
Save your settings file somewhere handy (e.g. d:\multimon.vssettings) 
</li>
          <li>
Repeat for each layout you like 
</li>
        </ol>
        <p>
Now you have two or more settings files, you just need to create a shortcut icon for
each one somewhere in your start menu.
</p>
        <p>
Edit the target, and add the parameter <strong>/resetsettings D:\multimon.vssettings</strong> to
the end (replace the path with each settings file path).
</p>
        <p>
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_13.png" width="382" height="536" />
        </p>
        <p>
Now when you launch your new shortcut, it will start Visual Studio 2008 with the correct
window layout. Because you only exported and imported the Window Layouts, all the
other settings stay the same.
</p>
        <p>
You may also want to make these changes to your shortcut:
</p>
        <ul>
          <li>
Add the <strong>/nosplash </strong>parameter to your Target, to avoid the "Visual
Studio" splash screen and make it slightly faster to start (perception is everything!) 
</li>
          <li>
Check the <strong>Run as administrator </strong>option, which is useful if you often
need to restart Visual Studio to connect to the ASP.NET worker process when developing
under IIS. 
</li>
        </ul>
        <p>
          <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_16.png" width="644" height="457" />
        </p>
        <p>
Cheers,
</p>
        <p>
Kirk
</p>
        <p>
Previous VS2008 Tips:
</p>
        <ul>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/09/VisualStudioTipsNTricksDEV313.aspx">Visual
Studio Tips n Tricks (DEV313)</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/10/VisualStudioCopyReferences.aspx">Visual
Studio - Copy references</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/11/TurnOffOutliningRegionsInVisualStudio.aspx">Turn
off outlining / regions in Visual Studio</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/12/VisualStudio2008TipOfTheDayReliveTheSeries.aspx">Visual
Studio 2008 tip of the day - relive the series</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/16/ExploreFilesFromVisualStudio.aspx">Explore
files from Visual Studio</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/26/SnippetDesignerReleased.aspx">Snippet
Designer released</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/30/CtrlBringUpThatAnnoyingSmartTagMenu.aspx">Ctrl
+ . -- Bring up that annoying smart tag menu</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/10/24/TemporaryProjectsYouDontHaveToSaveThem.aspx">Temporary
Projects - You don't have to save them</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/11/11/ChristchurchVisualStudioTipsnTricks.aspx">Christchurch
- Visual Studio Tips'n'Tricks</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/11/14/VisualStudioRegeditYourTabOrderingAndAddAColumnGuide.aspx">Visual
Studio - Regedit your tab ordering and add a column guide</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=249a58ec-4b74-4bdb-beaa-8b704b90e9d3" />
      </body>
      <title>Visual Studio 2008: Remember toolbar positions</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,249a58ec-4b74-4bdb-beaa-8b704b90e9d3.aspx</guid>
      <link>http://pageofwords.com/blog/2009/09/01/VisualStudio2008RememberToolbarPositions.aspx</link>
      <pubDate>Tue, 01 Sep 2009 09:55:57 GMT</pubDate>
      <description>&lt;p&gt;
Visual Studio 2010 will have &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/08/31/multi-monitor-support-vs-2010-and-net-4-series.aspx"&gt;better
support for a multi-monitor setup&lt;/a&gt;, but it's possible to get part of the way in
2008 already.
&lt;/p&gt;
&lt;p&gt;
Toolbars and property windows (e.g. Solution Explorer, Class View) can be dragged
into separate windows (2010 will add the ability to drag documents into separate windows
too):
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Floating windows" border="0" alt="Floating windows" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_5.png" width="644" height="383" /&gt;
&lt;/p&gt;
&lt;p&gt;
Window positioning gets a bit weird when you switch from one monitor to another, or
change resolutions - a common occurrence when you're a laptop user docking and un-docking.
&lt;/p&gt;
&lt;p&gt;
You can create two settings files, one for your single monitor layout, and one for
your multi-monitor layout, and use them when starting Visual Studio 2008:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Arrange your windows the way you like them 
&lt;/li&gt;
&lt;li&gt;
Go to &lt;strong&gt;Tools &lt;/strong&gt;&amp;gt; &lt;strong&gt;Import and Export Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Export
selected environment settings&lt;/strong&gt; 
&lt;/li&gt;
&lt;li&gt;
You get a great tree-view of every possible setting category in Visual Studio. Click
the top node to deselect everything, and scroll down and select only &lt;strong&gt;General
Settings &lt;/strong&gt;&amp;gt; &lt;strong&gt;Window Layouts&lt;/strong&gt;: 
&lt;br /&gt;
&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_10.png" width="244" height="206" /&gt; 
&lt;/li&gt;
&lt;li&gt;
Save your settings file somewhere handy (e.g. d:\multimon.vssettings) 
&lt;/li&gt;
&lt;li&gt;
Repeat for each layout you like 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Now you have two or more settings files, you just need to create a shortcut icon for
each one somewhere in your start menu.
&lt;/p&gt;
&lt;p&gt;
Edit the target, and add the parameter &lt;strong&gt;/resetsettings D:\multimon.vssettings&lt;/strong&gt; to
the end (replace the path with each settings file path).
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_13.png" width="382" height="536" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Now when you launch your new shortcut, it will start Visual Studio 2008 with the correct
window layout. Because you only exported and imported the Window Layouts, all the
other settings stay the same.
&lt;/p&gt;
&lt;p&gt;
You may also want to make these changes to your shortcut:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Add the &lt;strong&gt;/nosplash &lt;/strong&gt;parameter to your Target, to avoid the "Visual
Studio" splash screen and make it slightly faster to start (perception is everything!) 
&lt;/li&gt;
&lt;li&gt;
Check the &lt;strong&gt;Run as administrator &lt;/strong&gt;option, which is useful if you often
need to restart Visual Studio to connect to the ASP.NET worker process when developing
under IIS. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/VisualStudio2008Remembertoolbarpositions_12E47/image_16.png" width="644" height="457" /&gt; 
&lt;/p&gt;
&lt;p&gt;
Cheers,
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;p&gt;
Previous VS2008 Tips:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/09/VisualStudioTipsNTricksDEV313.aspx"&gt;Visual
Studio Tips n Tricks (DEV313)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/10/VisualStudioCopyReferences.aspx"&gt;Visual
Studio - Copy references&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/11/TurnOffOutliningRegionsInVisualStudio.aspx"&gt;Turn
off outlining / regions in Visual Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/12/VisualStudio2008TipOfTheDayReliveTheSeries.aspx"&gt;Visual
Studio 2008 tip of the day - relive the series&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/16/ExploreFilesFromVisualStudio.aspx"&gt;Explore
files from Visual Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/26/SnippetDesignerReleased.aspx"&gt;Snippet
Designer released&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/30/CtrlBringUpThatAnnoyingSmartTagMenu.aspx"&gt;Ctrl
+ . -- Bring up that annoying smart tag menu&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/10/24/TemporaryProjectsYouDontHaveToSaveThem.aspx"&gt;Temporary
Projects - You don't have to save them&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/11/11/ChristchurchVisualStudioTipsnTricks.aspx"&gt;Christchurch
- Visual Studio Tips'n'Tricks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/11/14/VisualStudioRegeditYourTabOrderingAndAddAColumnGuide.aspx"&gt;Visual
Studio - Regedit your tab ordering and add a column guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=249a58ec-4b74-4bdb-beaa-8b704b90e9d3" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,249a58ec-4b74-4bdb-beaa-8b704b90e9d3.aspx</comments>
      <category>.NET;VS2008Tips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=9a15a145-d4fe-45e1-991f-4eb872b3f6e1</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9a15a145-d4fe-45e1-991f-4eb872b3f6e1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Code Camp is less than two weeks away!
</p>
        <p>
If you want to catch some <i>free</i> sessions on the state-of-the-art in .NET development,
SQL Server and developer security then sign up for <a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx">Code
Camp Auckland 2009</a> now.
</p>
        <p>
Code Camps are non-profit, and organised by members of the <a href="http://www.dot.net.nz">local
developer community</a>. This year the Auckland Code Camp is the day before <a href="http://www.microsoft.co.nz/teched">TechEd</a> (Sunday
13 September), so we've managed to nab a few great speakers on their day off to present
to us.
</p>
        <p>
It's the biggest Code Camp ever - over 14 hours of sessions across 3 streams from
10am till 5pm:
</p>
        <p>
          <b>Development...</b>
        </p>
        <ul>
          <li>
What's Happening in .NET Languages and Why Should You Care? 
</li>
          <li>
.NET on the iPhone and Beyond</li>
          <li>
Behaviour Driven Development 
</li>
          <li>
Domain Specific Languages 
</li>
          <li>
C# 4.0 new features</li>
          <li>
Silverlight with Prism</li>
          <li>
Becoming Certified</li>
          <li>
Lightning Talks 
</li>
          <li>
and more! 
</li>
        </ul>
        <p>
The latest and greatest in development topics, by the people that know!
</p>
        <p>
          <b>SQL Server?</b>
        </p>
        <ul>
          <li>
SQL Server Virtualisation Best Practices and Recommendations 
</li>
          <li>
SQL Server Analysis Services and Gemini 
</li>
          <li>
Query Optimization and Query Tuning 
</li>
          <li>
Understanding SQL Server Indexing 
</li>
          <li>
SQL Server Maintenance 
</li>
        </ul>
        <p>
Training and guidance from the best SQL trainers in the industry!
</p>
        <p>
          <b>Security!</b>
        </p>
        <ul>
          <li>
Secure Development Lifecycle and Threat Modelling workshop 
</li>
          <li>
Secure Coding Practices 
</li>
        </ul>
        <p>
We are lucky to have <a href="http://blogs.msdn.com/michael_howard">Michael Howard</a>,
author of <a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/984332/">Writing
Secure Code</a> and <a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/15172892">24
Deadly Sins of Software Security</a> giving a <i>free</i> workshop for developers,
architects and team leads on Threat Modelling and the Secure Development Lifecycle.
This will be followed by a session on how to write secure .NET code.
</p>
        <p>
Auckland has never seen such an awesome <i>free </i>event!
</p>
        <p>
Presenters that are offering their time include <a href="http://sqlblog.com/blogs/greg_low/">Greg
Low</a>, <a href="http://sqlcat.com/members/Nicholas-Dritsas.aspx">Nicholas Dritsas</a> and
Auckland's <a href="http://blog.bittercoder.com/">Alex Henderson</a> of <a href="http://blog.bittercoder.com/CategoryView,category,architectureChat.aspx">Architecture
Chat</a> fame.
</p>
        <p>
To cover the costs of the event, we have the help of our generous sponsors: <a href="http://www.microsoft.co.nz">Microsoft</a>, <a href="http://www.datacom.co.nz">Datacom</a>, <a href="http://www.intergen.co.nz">Intergen</a>, <a href="http://apac.ineta.org">INETA</a> and <a href="http://www.xero.com">Xero</a>.
</p>
        <p>
All that's left for you to do is to <a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx">visit
the website</a> for more details, and <a href="http://www.codecamp.net.nz/">sign up
now</a>!
</p>
        <p>
See you there on Sunday 13 September,
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9a15a145-d4fe-45e1-991f-4eb872b3f6e1" />
      </body>
      <title>Code Camp Auckland 2009 - Development | SQL | Security</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</guid>
      <link>http://pageofwords.com/blog/2009/08/30/CodeCampAuckland2009DevelopmentSQLSecurity.aspx</link>
      <pubDate>Sun, 30 Aug 2009 11:17:02 GMT</pubDate>
      <description>&lt;p&gt;
Code Camp is less than two weeks away!
&lt;/p&gt;
&lt;p&gt;
If you want to catch some &lt;i&gt;free&lt;/i&gt; sessions on the state-of-the-art in .NET development,
SQL Server and developer security then sign up for &lt;a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx"&gt;Code
Camp Auckland 2009&lt;/a&gt; now.
&lt;/p&gt;
&lt;p&gt;
Code Camps are non-profit, and organised by members of the &lt;a href="http://www.dot.net.nz"&gt;local
developer community&lt;/a&gt;. This year the Auckland Code Camp is the day before &lt;a href="http://www.microsoft.co.nz/teched"&gt;TechEd&lt;/a&gt; (Sunday
13 September), so we've managed to nab a few great speakers on their day off to present
to us.
&lt;/p&gt;
&lt;p&gt;
It's the biggest Code Camp ever - over 14 hours of sessions across 3 streams from
10am till 5pm:
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Development...&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
What's Happening in .NET Languages and Why Should You Care? 
&lt;/li&gt;
&lt;li&gt;
.NET on the iPhone and Beyond&lt;/li&gt;
&lt;li&gt;
Behaviour Driven Development 
&lt;/li&gt;
&lt;li&gt;
Domain Specific Languages 
&lt;/li&gt;
&lt;li&gt;
C# 4.0 new features&lt;/li&gt;
&lt;li&gt;
Silverlight with Prism&lt;/li&gt;
&lt;li&gt;
Becoming Certified&lt;/li&gt;
&lt;li&gt;
Lightning Talks 
&lt;/li&gt;
&lt;li&gt;
and more! 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The latest and greatest in development topics, by the people that know!
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;SQL Server?&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL Server Virtualisation Best Practices and Recommendations 
&lt;/li&gt;
&lt;li&gt;
SQL Server Analysis Services and Gemini 
&lt;/li&gt;
&lt;li&gt;
Query Optimization and Query Tuning 
&lt;/li&gt;
&lt;li&gt;
Understanding SQL Server Indexing 
&lt;/li&gt;
&lt;li&gt;
SQL Server Maintenance 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Training and guidance from the best SQL trainers in the industry!
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Security!&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Secure Development Lifecycle and Threat Modelling workshop 
&lt;/li&gt;
&lt;li&gt;
Secure Coding Practices 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We are lucky to have &lt;a href="http://blogs.msdn.com/michael_howard"&gt;Michael Howard&lt;/a&gt;,
author of &lt;a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/984332/"&gt;Writing
Secure Code&lt;/a&gt; and &lt;a href="http://www.fishpond.co.nz/Books/Computers/Networking/Security/product_info/15172892"&gt;24
Deadly Sins of Software Security&lt;/a&gt; giving a &lt;i&gt;free&lt;/i&gt; workshop for developers,
architects and team leads on Threat Modelling and the Secure Development Lifecycle.
This will be followed by a session on how to write secure .NET code.
&lt;/p&gt;
&lt;p&gt;
Auckland has never seen such an awesome &lt;i&gt;free &lt;/i&gt;event!
&lt;/p&gt;
&lt;p&gt;
Presenters that are offering their time include &lt;a href="http://sqlblog.com/blogs/greg_low/"&gt;Greg
Low&lt;/a&gt;, &lt;a href="http://sqlcat.com/members/Nicholas-Dritsas.aspx"&gt;Nicholas Dritsas&lt;/a&gt; and
Auckland's &lt;a href="http://blog.bittercoder.com/"&gt;Alex Henderson&lt;/a&gt; of &lt;a href="http://blog.bittercoder.com/CategoryView,category,architectureChat.aspx"&gt;Architecture
Chat&lt;/a&gt; fame.
&lt;/p&gt;
&lt;p&gt;
To cover the costs of the event, we have the help of our generous sponsors: &lt;a href="http://www.microsoft.co.nz"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://www.datacom.co.nz"&gt;Datacom&lt;/a&gt;, &lt;a href="http://www.intergen.co.nz"&gt;Intergen&lt;/a&gt;, &lt;a href="http://apac.ineta.org"&gt;INETA&lt;/a&gt; and &lt;a href="http://www.xero.com"&gt;Xero&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
All that's left for you to do is to &lt;a href="http://www.dot.net.nz/GeneralPages/CodeCampAuckland2009.aspx"&gt;visit
the website&lt;/a&gt; for more details, and &lt;a href="http://www.codecamp.net.nz/"&gt;sign up
now&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;
See you there on Sunday 13 September,
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=9a15a145-d4fe-45e1-991f-4eb872b3f6e1" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,9a15a145-d4fe-45e1-991f-4eb872b3f6e1.aspx</comments>
      <category>.NET;CodeCamp;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=4d1a8e94-b87a-4be6-9169-9da4230cadbc</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,4d1a8e94-b87a-4be6-9169-9da4230cadbc.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,4d1a8e94-b87a-4be6-9169-9da4230cadbc.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4d1a8e94-b87a-4be6-9169-9da4230cadbc</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today at the Wellington .NET User Group, Kevin presented a talk on "Windows Mobile
6.5 Widgets".
</p>
        <p>
Kevin has kindly provided his slides and samples for download:
</p>
        <p>
        </p>
        <div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:FF7EC618-8FBE-49a5-B908-2339AF2ABCDF:d827784f-9769-4f13-81e7-f86e15b9eefc" class="wlWriterEditableSmartContent">
          <div>
            <a href="content/binary/Developing%20Widgets.pptx">Developing Widgets.pptx (256.62
KB)</a>
            <br />
            <a href="http://pageofwords.com/blog/content/binary/wibble.zip">wibble.zip (.75 KB)</a>
            <br />
            <a href="http://pageofwords.com/blog/content/binary/geekzonefriends.zip">geekzonefriends.zip
(119.48 KB)</a>
            <br />
          </div>
        </div>
        <p>
        </p>
        <p>
I found this interesting. I haven't developed any applications for Windows Mobile,
though I have played around a bit with the emulator and deploying code from within
Visual Studio.
</p>
        <p>
Widgets seem like a lot simpler application development model than native or compact
framework applications. The application development model is similar to Vista sidebar
gadgets, as there is a packaged zip file containing the application inside - and the
application is 'simply' Javascript and HTML. Widgets can use XHR or DOM manipulation,
and have access to a small amount of local storage to store preference information.
</p>
        <p>
Windows Mobile 6.5 treats widgets as first-class application citizens within the OS
- they have icons on the revamped start screen, and appear in the uninstall screen.
As far as the user knows, they are the same as a native application.
</p>
        <p>
Where the process is currently let down is in deployment and debugging. Currently
a widget can only be deployed through the Windows Mobile marketplace, after the developer
has signed up and the application has been reviewed (I think!). Debugging from Visual
Studio seems non-existent, meaning that development is through trial and error.
</p>
        <p>
I could see an enterprising person (like Kevin) building a Javascript library that
simulated the API provided by the widget infrastructure, so that widgets could be
developed and tested on a desktop before being deployed on a device. Kevin, am I right
that all that is needed is the Widget object and some fake ActiveX controls?
</p>
        <p>
All up, an interesting session.
</p>
        <p>
Cheers!
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4d1a8e94-b87a-4be6-9169-9da4230cadbc" />
      </body>
      <title>Windows Mobile 6.5 Widgets with Kevin Daly - 19 Aug 09</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,4d1a8e94-b87a-4be6-9169-9da4230cadbc.aspx</guid>
      <link>http://pageofwords.com/blog/2009/08/19/WindowsMobile65WidgetsWithKevinDaly19Aug09.aspx</link>
      <pubDate>Wed, 19 Aug 2009 10:51:20 GMT</pubDate>
      <description>&lt;p&gt;
Today at the Wellington .NET User Group, Kevin presented a talk on "Windows Mobile
6.5 Widgets".
&lt;/p&gt;
&lt;p&gt;
Kevin has kindly provided his slides and samples for download:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:FF7EC618-8FBE-49a5-B908-2339AF2ABCDF:d827784f-9769-4f13-81e7-f86e15b9eefc" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;a href="content/binary/Developing%20Widgets.pptx"&gt;Developing Widgets.pptx (256.62
KB)&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/wibble.zip"&gt;wibble.zip (.75 KB)&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/geekzonefriends.zip"&gt;geekzonefriends.zip
(119.48 KB)&lt;/a&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I found this interesting. I haven't developed any applications for Windows Mobile,
though I have played around a bit with the emulator and deploying code from within
Visual Studio.
&lt;/p&gt;
&lt;p&gt;
Widgets seem like a lot simpler application development model than native or compact
framework applications. The application development model is similar to Vista sidebar
gadgets, as there is a packaged zip file containing the application inside - and the
application is 'simply' Javascript and HTML. Widgets can use XHR or DOM manipulation,
and have access to a small amount of local storage to store preference information.
&lt;/p&gt;
&lt;p&gt;
Windows Mobile 6.5 treats widgets as first-class application citizens within the OS
- they have icons on the revamped start screen, and appear in the uninstall screen.
As far as the user knows, they are the same as a native application.
&lt;/p&gt;
&lt;p&gt;
Where the process is currently let down is in deployment and debugging. Currently
a widget can only be deployed through the Windows Mobile marketplace, after the developer
has signed up and the application has been reviewed (I think!). Debugging from Visual
Studio seems non-existent, meaning that development is through trial and error.
&lt;/p&gt;
&lt;p&gt;
I could see an enterprising person (like Kevin) building a Javascript library that
simulated the API provided by the widget infrastructure, so that widgets could be
developed and tested on a desktop before being deployed on a device. Kevin, am I right
that all that is needed is the Widget object and some fake ActiveX controls?
&lt;/p&gt;
&lt;p&gt;
All up, an interesting session.
&lt;/p&gt;
&lt;p&gt;
Cheers!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=4d1a8e94-b87a-4be6-9169-9da4230cadbc" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,4d1a8e94-b87a-4be6-9169-9da4230cadbc.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=fe4eecbd-ee10-4b5a-990f-0dc2a838b057</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,fe4eecbd-ee10-4b5a-990f-0dc2a838b057.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,fe4eecbd-ee10-4b5a-990f-0dc2a838b057.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fe4eecbd-ee10-4b5a-990f-0dc2a838b057</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today I went to Nelson for lunch, and presented on Caching to the <a href="http://www.dot.net.nz/UserGroupPages/NelsonNET.aspx">Nelson
.NET User Group</a>.
</p>
        <p>
The talk was a repeat of my <a href="http://pageofwords.com/blog/2009/05/18/CachingTheUserGroupPresentation.aspx">Wellington
and Auckland talk</a> from a few months ago, and covered various places you typically
cache data in a .NET app, motivating the discussion of memcached and Velocity.
</p>
        <p>
It was nice to get down to Nelson to briefly soak up the sun and meet a few new people.
</p>
        <p>
View my previous post on <a href="http://pageofwords.com/blog/2009/05/18/CachingTheUserGroupPresentation.aspx">Caching</a> for
further info.
</p>
        <p>
Thanks for having me <a href="http://www.fishofprey.com/">Daniel</a>!
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=fe4eecbd-ee10-4b5a-990f-0dc2a838b057" />
      </body>
      <title>Caching &amp;ndash; Nelson .NET User Group</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,fe4eecbd-ee10-4b5a-990f-0dc2a838b057.aspx</guid>
      <link>http://pageofwords.com/blog/2009/08/19/CachingNdashNelsonNETUserGroup.aspx</link>
      <pubDate>Wed, 19 Aug 2009 10:32:39 GMT</pubDate>
      <description>&lt;p&gt;
Today I went to Nelson for lunch, and presented on Caching to the &lt;a href="http://www.dot.net.nz/UserGroupPages/NelsonNET.aspx"&gt;Nelson
.NET User Group&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
The talk was a repeat of my &lt;a href="http://pageofwords.com/blog/2009/05/18/CachingTheUserGroupPresentation.aspx"&gt;Wellington
and Auckland talk&lt;/a&gt; from a few months ago, and covered various places you typically
cache data in a .NET app, motivating the discussion of memcached and Velocity.
&lt;/p&gt;
&lt;p&gt;
It was nice to get down to Nelson to briefly soak up the sun and meet a few new people.
&lt;/p&gt;
&lt;p&gt;
View my previous post on &lt;a href="http://pageofwords.com/blog/2009/05/18/CachingTheUserGroupPresentation.aspx"&gt;Caching&lt;/a&gt; for
further info.
&lt;/p&gt;
&lt;p&gt;
Thanks for having me &lt;a href="http://www.fishofprey.com/"&gt;Daniel&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=fe4eecbd-ee10-4b5a-990f-0dc2a838b057" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,fe4eecbd-ee10-4b5a-990f-0dc2a838b057.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e52a839d-b80c-4044-aa4a-a44e966f3f79</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e52a839d-b80c-4044-aa4a-a44e966f3f79</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When is it not safe to load an XML file into an XmlDocument object?
</p>
        <p>
Any time the source is untrusted, it turns out:
</p>
        <p>
          <a href="http://blogs.msdn.com/tomholl/archive/2009/05/21/protecting-against-xml-entity-expansion-attacks.aspx">Tom
Hollander: Protecting against XML Entity Expansion attacks</a>
        </p>
        <p>
That's one I haven't heard of before, and shows why every input from an untrusted
source should be treated with care.
</p>
        <p>
It reminds me of the zip expansion attacks that used to break mail servers 8 or so
years ago:
</p>
        <blockquote>
          <p>
            <em>Zip expansion attack. A large uniform file (for example 1 Gbyte of Zeros) is zipped
and e-mail. AV or content filtering products attempt to unzip the attachment for checking,
but are unable to do so because of lack of disc space. </em>[<a href="http://www.ecommnet.co.uk/products/mxtreme/emailsecurityThreats.asp">ecommnet</a>]
</p>
        </blockquote>
        <p>
The old expanding file trick. What will they think of next?
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e52a839d-b80c-4044-aa4a-a44e966f3f79" />
      </body>
      <title>Unsafe XmlDocument?</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</guid>
      <link>http://pageofwords.com/blog/2009/05/22/UnsafeXmlDocument.aspx</link>
      <pubDate>Fri, 22 May 2009 08:54:43 GMT</pubDate>
      <description>&lt;p&gt;
When is it not safe to load an XML file into an XmlDocument object?
&lt;/p&gt;
&lt;p&gt;
Any time the source is untrusted, it turns out:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/tomholl/archive/2009/05/21/protecting-against-xml-entity-expansion-attacks.aspx"&gt;Tom
Hollander: Protecting against XML Entity Expansion attacks&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
That's one I haven't heard of before, and shows why every input from an untrusted
source should be treated with care.
&lt;/p&gt;
&lt;p&gt;
It reminds me of the zip expansion attacks that used to break mail servers 8 or so
years ago:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Zip expansion attack. A large uniform file (for example 1 Gbyte of Zeros) is zipped
and e-mail. AV or content filtering products attempt to unzip the attachment for checking,
but are unable to do so because of lack of disc space. &lt;/em&gt;[&lt;a href="http://www.ecommnet.co.uk/products/mxtreme/emailsecurityThreats.asp"&gt;ecommnet&lt;/a&gt;]
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The old expanding file trick. What will they think of next?
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e52a839d-b80c-4044-aa4a-a44e966f3f79" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e52a839d-b80c-4044-aa4a-a44e966f3f79.aspx</comments>
      <category>.NET;Security</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=b7d89afe-186d-409f-868c-10fae1c11c2a</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,b7d89afe-186d-409f-868c-10fae1c11c2a.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,b7d89afe-186d-409f-868c-10fae1c11c2a.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b7d89afe-186d-409f-868c-10fae1c11c2a</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I presented a talk at the Wellington and Auckland .NET user groups this month titled
"Best Practices -  Caching". The goal of the talk was to discuss why we might
need to add caching to our applications, and the way that we typically add it to each
layer:
</p>
        <ul>
          <li>
Client-side: reducing data flowing to the server, enable caching through expiry etc</li>
          <li>
ASP.NET: stashing data; page-level, fragment, IIS caching</li>
          <li>
Business layer: cache objects to avoid computation</li>
          <li>
Data layer: cache raw data from the database; identity maps</li>
          <li>
Database: reduce hits on disk</li>
        </ul>
        <p>
The difficult part when caching at any layer is invalidating the redundant data that
is stored in the cache when the source data changes. It's easier depending on the
type of the data:
</p>
        <ul>
          <li>
Reference - shared reads (e.g. Catalog)</li>
          <ul>
            <li>
Easy to cache and distribute</li>
          </ul>
          <li>
Activity - exclusive write (e.g. Cart)</li>
          <ul>
            <li>
Can cache each user's data separately</li>
          </ul>
          <li>
Resource - shared, concurrency read/write, large number of transactions (e.g. Auction
bid)</li>
          <ul>
            <li>
Caching is hard</li>
            <li>
DB is best source of data, with careful caching</li>
          </ul>
        </ul>
        <p>
The second half of the talk we looked at two caching technologies - memcached and
Velocity.
</p>
        <p>
The presentation: <a href="http://pageofwords.com/blog/content/binary/Caching-KirkJackson.pdf">Caching.pdf</a> 
</p>
        <p>
Some links:
</p>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx">Microsoft Project code
named Velocity</a>
          </li>
          <li>
            <a href="http://stevesouders.com/">Steve Souders - High performance web sites</a>
          </li>
          <li>
            <a href="http://developer.yahoo.com/yslow/">YSlow</a>
          </li>
        </ul>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b7d89afe-186d-409f-868c-10fae1c11c2a" />
      </body>
      <title>Caching - the user group presentation</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,b7d89afe-186d-409f-868c-10fae1c11c2a.aspx</guid>
      <link>http://pageofwords.com/blog/2009/05/18/CachingTheUserGroupPresentation.aspx</link>
      <pubDate>Mon, 18 May 2009 10:40:13 GMT</pubDate>
      <description>&lt;p&gt;
I presented a talk at the Wellington and Auckland .NET user groups this month titled
"Best Practices -&amp;nbsp; Caching". The goal of the talk was to discuss why we might
need to add caching to our applications, and the way that we typically add it to each
layer:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Client-side: reducing data flowing to the server, enable caching through expiry etc&lt;/li&gt;
&lt;li&gt;
ASP.NET: stashing data; page-level, fragment, IIS caching&lt;/li&gt;
&lt;li&gt;
Business layer: cache objects to avoid computation&lt;/li&gt;
&lt;li&gt;
Data layer: cache raw data from the database; identity maps&lt;/li&gt;
&lt;li&gt;
Database: reduce hits on disk&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The difficult part when caching at any layer is invalidating the redundant data that
is stored in the cache when the source data changes. It's easier depending on the
type of the data:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Reference - shared reads (e.g. Catalog)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Easy to cache and distribute&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Activity - exclusive write (e.g. Cart)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Can cache each user's data separately&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Resource - shared, concurrency read/write, large number of transactions (e.g. Auction
bid)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Caching is hard&lt;/li&gt;
&lt;li&gt;
DB is best source of data, with careful caching&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;
The second half of the talk we looked at two caching technologies - memcached and
Velocity.
&lt;/p&gt;
&lt;p&gt;
The presentation: &lt;a href="http://pageofwords.com/blog/content/binary/Caching-KirkJackson.pdf"&gt;Caching.pdf&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Some links:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Microsoft Project code
named Velocity&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://stevesouders.com/"&gt;Steve Souders - High performance web sites&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b7d89afe-186d-409f-868c-10fae1c11c2a" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,b7d89afe-186d-409f-868c-10fae1c11c2a.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=326c93fe-9168-4ecb-9d0d-c527e5622a6a</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,326c93fe-9168-4ecb-9d0d-c527e5622a6a.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,326c93fe-9168-4ecb-9d0d-c527e5622a6a.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=326c93fe-9168-4ecb-9d0d-c527e5622a6a</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jeff Moser writes <a href="http://www.moserware.com/2009/03/how-net-regular-expressions-really-work.html">How
.NET Regular Expressions Really Work</a>.
</p>
        <p>
I've got a soft spot for regular expressions (programming Perl can do that to you),
and while I understand backtracking and greedy / lazy matching, I've never actually
read the source code for a regex library before.
</p>
        <p>
If you haven't either, and want to benefit from someone else's description of the
14,000 lines of .NET regular expression library, you'll enjoy this post.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=326c93fe-9168-4ecb-9d0d-c527e5622a6a" />
      </body>
      <title>Understanding code: How .NET regex's work</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,326c93fe-9168-4ecb-9d0d-c527e5622a6a.aspx</guid>
      <link>http://pageofwords.com/blog/2009/03/18/UnderstandingCodeHowNETRegexsWork.aspx</link>
      <pubDate>Wed, 18 Mar 2009 10:31:31 GMT</pubDate>
      <description>&lt;p&gt;
Jeff Moser writes &lt;a href="http://www.moserware.com/2009/03/how-net-regular-expressions-really-work.html"&gt;How
.NET Regular Expressions Really Work&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I've got a soft spot for regular expressions (programming Perl can do that to you),
and while I understand backtracking and greedy / lazy matching, I've never actually
read the source code for a regex library before.
&lt;/p&gt;
&lt;p&gt;
If you haven't either, and want to benefit from someone else's description of the
14,000 lines of .NET regular expression library, you'll enjoy this post.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=326c93fe-9168-4ecb-9d0d-c527e5622a6a" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,326c93fe-9168-4ecb-9d0d-c527e5622a6a.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've got the afternoon off work this Wednesday 11 Feb, and am popping over to Nelson
to present on web security (details below).
</p>
        <p>
I hope to see you there!
</p>
        <p>
Kirk
</p>
        <p>
Daniel Ballinger wrote: 
<br />
&gt; Hi All, 
<br />
&gt; 
<br />
&gt; Kirk Jackson from the Wellington .NET user group will be in town on 
<br />
&gt; Wednesday the 11th of February and is giving a presentation. 
<br />
&gt; 
<br />
&gt; Title: 
<br />
&gt; Overcoming your web insecurity 
<br />
&gt; 
<br />
&gt; Abstract: 
</p>
        <p>
&gt; As an <a href="http://ASP.NET">ASP.NET</a> developer, there are many things to
think about while 
<br />
&gt; developing your web application. Come along to understand the 
<br />
&gt; fundamentals of developing a secure web application, and learn how to 
<br />
&gt; protect your site against the dangers of cross-site scripting, cross 
<br />
&gt; domain request forging and click-jacking. 
<br />
&gt; 
<br />
&gt; This session will be suitable for all levels of experience, and 
<br />
&gt; developers who use other web development platforms such as PHP or Java. 
<br />
&gt;
</p>
        <p>
&gt; Presenter: 
<br />
&gt; Kirk Jackson 
<br />
&gt; 
<br />
&gt; Useful links: 
<br />
&gt; <a href="http://pageofwords.com">http://pageofwords.com</a> - Kirk's blog 
<br />
&gt; 
<br />
&gt; <a href="http://mscommunities.net.nz/">http://mscommunities.net.nz/</a> - The
home of Microsoft communities in New Zealand 
<br />
&gt; 
<br />
&gt; When: 
<br />
&gt; Wednesday 11th February 2009 
<br />
&gt; Gather at 2:50 pm, starting at 3:00 pm. 
<br />
&gt; 
<br />
&gt; Approximately 1 hour 15 minutes plus pizza afterward. 
<br />
&gt; 
<br />
&gt; Where: 
<br />
&gt; FuseIT Ltd, 
<br />
&gt; Ground Floor, 
<br />
&gt; 7 Forests Rd, 
<br />
&gt; Stoke, 
<br />
&gt; Nelson 
<br />
&gt; 
<br />
&gt; (Off Nayland Rd and behind Carters) 
<br />
&gt; <a href="http://local.live.com/default.aspx?v=2&amp;cp=-41.299774%7E173.236231&amp;style=r&amp;lvl=16&amp;alt=-1000">http://local.live.com/default.aspx?v=2&amp;cp=-41.299774~173.236231&amp;style=r&amp;lvl=16&amp;alt=-1000</a><br />
&gt; or 
<br />
&gt; <a href="http://maps.google.com/?ie=UTF8&amp;om=1&amp;z=17&amp;ll=-41.299774,173.236231&amp;spn=0.005239,0.010042&amp;t=h">http://maps.google.com/?ie=UTF8&amp;om=1&amp;z=17&amp;ll=-41.299774,173.236231&amp;spn=0.005239,0.010042&amp;t=h</a><br />
&gt; 
<br />
&gt; If you are parking on site, please use the parks marked FuseIT that 
<br />
&gt; are at the back of the site. 
<br />
&gt; 
<br />
&gt; Giveaways: 
<br />
&gt; A single copy Microsoft Office 2007 Professional 
<br />
&gt; 
<br />
&gt; Catering: Pizza &amp; Drinks 
<br />
&gt; 
<br />
&gt; Door Charge: Free 
<br />
&gt; 
<br />
&gt; 
<br />
&gt; RSVP to me if you are going to attend so I can guesstimate the food 
<br />
&gt; and drink requirements. 
<br />
&gt; 
<br />
&gt; However, feel free to turn up on the day though if you can't commit at 
<br />
&gt; the moment. 
<br />
&gt; 
<br />
&gt; Please feel free to invite anyone who may be interested in attending. 
<br />
&gt; 
<br />
&gt; 
<br />
&gt; Cheers, 
<br />
&gt; Daniel 
<br />
&gt; 
<br />
&gt; Daniel Ballinger 
<br />
&gt; Developer 
<br />
&gt; FuseIT ™
</p>
        <p>
          <a href="http://www.fishofprey.com/" target="_blank">http://www.fishofprey.com/</a>
        </p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d" />
      </body>
      <title>Nelson this Wednesday: Overcoming your web insecurity</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</guid>
      <link>http://pageofwords.com/blog/2009/02/05/NelsonThisWednesdayOvercomingYourWebInsecurity.aspx</link>
      <pubDate>Thu, 05 Feb 2009 21:17:38 GMT</pubDate>
      <description>&lt;p&gt;
I've got the afternoon off work this Wednesday 11 Feb, and am popping over to Nelson
to present on web security (details below).
&lt;/p&gt;
&lt;p&gt;
I hope to see you there!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;p&gt;
Daniel Ballinger wrote: 
&lt;br&gt;
&amp;gt; Hi All, 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Kirk Jackson from the Wellington .NET user group will be in town on 
&lt;br&gt;
&amp;gt; Wednesday the 11th of February and is giving a presentation. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Title: 
&lt;br&gt;
&amp;gt; Overcoming your web insecurity 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Abstract: 
&lt;/p&gt;
&lt;p&gt;
&amp;gt; As an &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; developer, there are many things to
think about while 
&lt;br&gt;
&amp;gt; developing your web application. Come along to understand the 
&lt;br&gt;
&amp;gt; fundamentals of developing a secure web application, and learn how to 
&lt;br&gt;
&amp;gt; protect your site against the dangers of cross-site scripting, cross 
&lt;br&gt;
&amp;gt; domain request forging and click-jacking. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; This session will be suitable for all levels of experience, and 
&lt;br&gt;
&amp;gt; developers who use other web development platforms such as PHP or Java. 
&lt;br&gt;
&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;gt; Presenter: 
&lt;br&gt;
&amp;gt; Kirk Jackson 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Useful links: 
&lt;br&gt;
&amp;gt; &lt;a href="http://pageofwords.com"&gt;http://pageofwords.com&lt;/a&gt; - Kirk's blog 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; &lt;a href="http://mscommunities.net.nz/"&gt;http://mscommunities.net.nz/&lt;/a&gt; - The
home of Microsoft communities in New Zealand 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; When: 
&lt;br&gt;
&amp;gt; Wednesday 11th February 2009 
&lt;br&gt;
&amp;gt; Gather at 2:50 pm, starting at 3:00 pm. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Approximately 1 hour 15 minutes plus pizza afterward. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Where: 
&lt;br&gt;
&amp;gt; FuseIT Ltd, 
&lt;br&gt;
&amp;gt; Ground Floor, 
&lt;br&gt;
&amp;gt; 7 Forests Rd, 
&lt;br&gt;
&amp;gt; Stoke, 
&lt;br&gt;
&amp;gt; Nelson 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; (Off Nayland Rd and behind Carters) 
&lt;br&gt;
&amp;gt; &lt;a href="http://local.live.com/default.aspx?v=2&amp;amp;cp=-41.299774%7E173.236231&amp;amp;style=r&amp;amp;lvl=16&amp;amp;alt=-1000"&gt;http://local.live.com/default.aspx?v=2&amp;amp;cp=-41.299774~173.236231&amp;amp;style=r&amp;amp;lvl=16&amp;amp;alt=-1000&lt;/a&gt; 
&lt;br&gt;
&amp;gt; or 
&lt;br&gt;
&amp;gt; &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;om=1&amp;amp;z=17&amp;amp;ll=-41.299774,173.236231&amp;amp;spn=0.005239,0.010042&amp;amp;t=h"&gt;http://maps.google.com/?ie=UTF8&amp;amp;om=1&amp;amp;z=17&amp;amp;ll=-41.299774,173.236231&amp;amp;spn=0.005239,0.010042&amp;amp;t=h&lt;/a&gt; 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; If you are parking on site, please use the parks marked FuseIT that 
&lt;br&gt;
&amp;gt; are at the back of the site. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Giveaways: 
&lt;br&gt;
&amp;gt; A single copy Microsoft Office 2007 Professional 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Catering: Pizza &amp;amp; Drinks 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Door Charge: Free 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; RSVP to me if you are going to attend so I can guesstimate the food 
&lt;br&gt;
&amp;gt; and drink requirements. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; However, feel free to turn up on the day though if you can't commit at 
&lt;br&gt;
&amp;gt; the moment. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Please feel free to invite anyone who may be interested in attending. 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Cheers, 
&lt;br&gt;
&amp;gt; Daniel 
&lt;br&gt;
&amp;gt; 
&lt;br&gt;
&amp;gt; Daniel Ballinger 
&lt;br&gt;
&amp;gt; Developer 
&lt;br&gt;
&amp;gt; FuseIT ™
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.fishofprey.com/" target="_blank"&gt;http://www.fishofprey.com/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,1d4b5e8c-5b1b-4bf0-b09c-37e9b4fc014d.aspx</comments>
      <category>.NET;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=a8c4d56b-f674-4fd5-83ca-b6adbf957861</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,a8c4d56b-f674-4fd5-83ca-b6adbf957861.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,a8c4d56b-f674-4fd5-83ca-b6adbf957861.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a8c4d56b-f674-4fd5-83ca-b6adbf957861</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Very cool. Mindscape have updated LightSpeed so that you can store your data in Amazon
SimpleDB: <a href="http://www.mindscape.co.nz/blog/index.php/2009/01/04/whats-coming-in-2009-from-mindscape/">What’s
coming in 2009 from Mindscape?</a></p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a8c4d56b-f674-4fd5-83ca-b6adbf957861" />
      </body>
      <title>LightSpeed over SimpleDB</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,a8c4d56b-f674-4fd5-83ca-b6adbf957861.aspx</guid>
      <link>http://pageofwords.com/blog/2009/01/05/LightSpeedOverSimpleDB.aspx</link>
      <pubDate>Mon, 05 Jan 2009 23:55:23 GMT</pubDate>
      <description>&lt;p&gt;
Very cool. Mindscape have updated LightSpeed so that you can store your data in Amazon
SimpleDB: &lt;a href="http://www.mindscape.co.nz/blog/index.php/2009/01/04/whats-coming-in-2009-from-mindscape/"&gt;What&amp;#8217;s
coming in 2009 from Mindscape?&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a8c4d56b-f674-4fd5-83ca-b6adbf957861" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,a8c4d56b-f674-4fd5-83ca-b6adbf957861.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
That trip turned out to be a bit of a whirlwind. Sorry I had to dash straight after
the presentation!
</p>
        <p>
The talk was an introduction to cross-site scripting (XSS), cross domain request forgery
(CDRF) and clickjacking, and used a common theme of "never trust users"
to show how trusting GET, POST, Cookies, Headers or other user supplied data could
be your downfall.
</p>
        <p>
I've already posted the slides to this talk from back when I presented at the Christchurch
Code Camp: <strong><a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx">Overcoming
your web insecurity</a></strong></p>
        <ul>
          <li>
Subscribe to my blog: <a href="http://pageofwords.com/">http://pageofwords.com</a></li>
          <li>
            <a href="http://www.asp.net/downloads/starter-kits/classifieds/">The Classifieds web
site starter kit</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?familyid=efb9c819-53ff-4f82-bfaf-e11625130c25&amp;displaylang=en">The
Microsoft Anti-XSS Library</a> (use instead of HttpUtility.Encode) 
</li>
          <li>
            <a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx">Which
ASP.NET Controls Automatically Encode?</a>
          </li>
          <li>
            <a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/">Clickjacking
video</a>
          </li>
          <li>
Framebusting: 
<br /><a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx">http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx</a></li>
          <li>
            <a href="http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx">Security
Runtime Engine</a> (coming, will help with ASP.NET controls) 
</li>
          <li>
OWASP – The Open Web Application Security Project – <a href="http://www.owasp.org">http://www.owasp.org</a></li>
        </ul>
        <p>
There's a new <a href="http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx">beta
of the Anti-XSS library</a> that you should check out when encoding your user-supplied
data for use in HTML or attributes. At the same link is the new CAT.NET tool that
analyses your code for weaknesses.
</p>
        <p>
The Anti-XSS library now includes the <a href="http://blogs.msdn.com/cisg/archive/2008/12/16/how-the-anti-xss-3-0-sre-works.aspx">Security
Runtime Engine</a>, which will help when encoding ASP.NET controls. I'll be posting
about it here soon, so subscribe to my RSS feed :)
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924" />
      </body>
      <title>Ellerslie User Group - Overcoming your web insecurity</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</guid>
      <link>http://pageofwords.com/blog/2008/12/17/EllerslieUserGroupOvercomingYourWebInsecurity.aspx</link>
      <pubDate>Wed, 17 Dec 2008 10:19:01 GMT</pubDate>
      <description>&lt;p&gt;
That trip turned out to be a bit of a whirlwind. Sorry I had to dash straight after
the presentation!
&lt;/p&gt;
&lt;p&gt;
The talk was an introduction to cross-site scripting (XSS), cross domain request forgery
(CDRF) and clickjacking, and used a common theme of &amp;quot;never trust users&amp;quot;
to show how trusting GET, POST, Cookies, Headers or other user supplied data could
be your downfall.
&lt;/p&gt;
&lt;p&gt;
I've already posted the slides to this talk from back when I presented at the Christchurch
Code Camp: &lt;strong&gt;&lt;a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx"&gt;Overcoming
your web insecurity&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Subscribe to my blog: &lt;a href="http://pageofwords.com/"&gt;http://pageofwords.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.asp.net/downloads/starter-kits/classifieds/"&gt;The Classifieds web
site starter kit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=efb9c819-53ff-4f82-bfaf-e11625130c25&amp;amp;displaylang=en"&gt;The
Microsoft Anti-XSS Library&lt;/a&gt; (use instead of HttpUtility.Encode) 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/sfaust/archive/2008/09/02/which-asp-net-controls-automatically-encodes.aspx"&gt;Which
ASP.NET Controls Automatically Encode?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/"&gt;Clickjacking
video&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Framebusting: 
&lt;br /&gt;
&lt;a href="http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx"&gt;http://pageofwords.com/blog/2008/10/06/FrameBustingInJavascript.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx"&gt;Security
Runtime Engine&lt;/a&gt; (coming, will help with ASP.NET controls) 
&lt;/li&gt;
&lt;li&gt;
OWASP &amp;#8211; The Open Web Application Security Project &amp;#8211; &lt;a href="http://www.owasp.org"&gt;http://www.owasp.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There's a new &lt;a href="http://blogs.msdn.com/cisg/archive/2008/12/15/anti-xss-3-0-beta-and-cat-net-community-technology-preview-now-live.aspx"&gt;beta
of the Anti-XSS library&lt;/a&gt; that you should check out when encoding your user-supplied
data for use in HTML or attributes. At the same link is the new CAT.NET tool that
analyses your code for weaknesses.
&lt;/p&gt;
&lt;p&gt;
The Anti-XSS library now includes the &lt;a href="http://blogs.msdn.com/cisg/archive/2008/12/16/how-the-anti-xss-3-0-sre-works.aspx"&gt;Security
Runtime Engine&lt;/a&gt;, which will help when encoding ASP.NET controls. I'll be posting
about it here soon, so subscribe to my RSS feed :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e84bf3fd-9554-4c09-aba8-4a3c3d0bb924" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e84bf3fd-9554-4c09-aba8-4a3c3d0bb924.aspx</comments>
      <category>.NET;Security;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I had fun presenting on ASP.NET security tonight at the <a href="http://www.dot.net.nz/wellington">.NET
Users Group</a>. It was a bit of a whirlwind tour through some common security issues
that you might come across when developing and deploying an ASP.NET application.
</p>
        <p>
I've already posted the slides to this talk from back when I presented at the Christchurch
Code Camp: <strong><a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx">Overcoming
your web insecurity</a></strong></p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5" />
      </body>
      <title>Wellington .NET - Overcoming your web insecurity</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5.aspx</guid>
      <link>http://pageofwords.com/blog/2008/12/03/WellingtonNETOvercomingYourWebInsecurity.aspx</link>
      <pubDate>Wed, 03 Dec 2008 09:14:41 GMT</pubDate>
      <description>&lt;p&gt;
I had fun presenting on ASP.NET security tonight at the &lt;a href="http://www.dot.net.nz/wellington"&gt;.NET
Users Group&lt;/a&gt;. It was a bit of a whirlwind tour through some common security issues
that you might come across when developing and deploying an ASP.NET application.
&lt;/p&gt;
&lt;p&gt;
I've already posted the slides to this talk from back when I presented at the Christchurch
Code Camp: &lt;strong&gt;&lt;a href="http://pageofwords.com/blog/2008/11/01/ChristchurchCodeCampOvercomingYourWebInsecurity.aspx"&gt;Overcoming
your web insecurity&lt;/a&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,0fb0e941-72c5-49f8-a87b-4d4f2a76e7f5.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Well that's good news: <a href="http://blogs.technet.com/server_core/archive/2008/11/13/server-core-changes-in-windows-server-2008-r2.aspx">Server
Core changes in Windows Server 2008 R2</a></p>
        <p>
Server Core will soon allow ASP.NET and PowerShell to be installed as options. They've
partitioned the .NET framework and only install those parts that are needed (presumably
to remove those parts that depend on the UI). I haven't seen any details, but I expect
that things in the System.Drawing space may not be there either.
</p>
        <p>
This is good news for people with a farm of web servers, and also for those that want
better management of their server core installs.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325" />
      </body>
      <title>Server Core 2008 R2 - Will include ASP.NET and PowerShell</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325.aspx</guid>
      <link>http://pageofwords.com/blog/2008/11/14/ServerCore2008R2WillIncludeASPNETAndPowerShell.aspx</link>
      <pubDate>Fri, 14 Nov 2008 20:45:06 GMT</pubDate>
      <description>&lt;p&gt;
Well that's good news: &lt;a href="http://blogs.technet.com/server_core/archive/2008/11/13/server-core-changes-in-windows-server-2008-r2.aspx"&gt;Server
Core changes in Windows Server 2008 R2&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Server Core will soon allow ASP.NET and PowerShell to be installed as options. They've
partitioned the .NET framework and only install those parts that are needed (presumably
to remove those parts that depend on the UI). I haven't seen any details, but I expect
that things in the System.Drawing space may not be there either.
&lt;/p&gt;
&lt;p&gt;
This is good news for people with a farm of web servers, and also for those that want
better management of their server core installs.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,5fd3cb68-9da4-4a4f-9c5c-f3f5f5f45325.aspx</comments>
      <category>.NET;PowerShell</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=b06f1678-d53c-43ae-96f5-4d6c384baa00</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,b06f1678-d53c-43ae-96f5-4d6c384baa00.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,b06f1678-d53c-43ae-96f5-4d6c384baa00.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b06f1678-d53c-43ae-96f5-4d6c384baa00</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
Hi,
</p>
        <p>
Many thanks to those who came along to our PDC Fireworks session last night. I hope
you had an interesting time hearing about what's coming on the horizon, and that your
families enjoyed meeting your geek friends! 
<br />
A <i>huge</i> thank you to our speakers who presented on such a wide range of topics
in a limited time. If you want to find out more or watch any sessions from the PDC,
you could visit the Channel 9 PDC site, or visit the blogs of the presenters:
</p>
        <ul>
          <li>
            <a href="http://www.syringe.net.nz/">Chris Auld</a>
          </li>
          <li>
            <a href="http://james.newtonking.com/">James Newton-King</a>
          </li>
          <li>
            <a href="http://www.geekzone.co.nz/JamesHip">James Hippolite</a>
          </li>
          <li>
Mark Orange 
</li>
          <li>
            <a href="http://www.chandima.net/Blog/">Chan Kulathilake</a>
          </li>
          <li>
            <a href="http://bgeek.net/">Owen Evans</a>
          </li>
          <li>
            <a href="http://pageofwords.com">Kirk Jackson</a>
          </li>
        </ul>
        <p>
Also, a big thanks to those who helped set up and tidy up the room. Great job!
</p>
        <p>
The .NET user group meets once or twice monthly, usually on the first and third Wednesday
of the month. If you'd like to go on my mailing list for upcoming user group presentations,
please <a href="mailto:kirkj@paradise.net.nz">email me</a>.
</p>
        <p>
If you're interested in the <a href="http://www.sharepointusergroup.net.nz/">Wellington
Sharepoint User Group</a>, or the <a href="http://www.dot.net.nz/wellington?tabid=101">Wellington
SQL User Group</a>, make sure you follow the links to sign up to them.
</p>
        <h2>
          <b>Upcoming Sessions:</b>
        </h2>
There's a few events coming up in Wellington that are free to attend: 
<h3>Wed 19 Nov, 6pm - Microsoft .NET Services with Chaks Chandran [.NET User Group]
</h3><p><a href="http://www.microsoft.com/azure/netservices.mspx">Microsoft .Net Services</a> is
a part of the recently announced <a href="http://www.microsoft.com/azure/services.mspx">Microsoft
Azure Platform</a>. What does Microsoft .Net Services provide ?
</p><p>
Microsoft .Net Services consists of three main components:
</p><ol><li><a href="http://www.microsoft.com/azure/servicebus.mspx">Service Bus</a></li><li><a href="http://www.microsoft.com/azure/accesscontrol.mspx">Access Control</a></li><li><a href="http://www.microsoft.com/azure/workflow.mspx">Workflow Services</a></li></ol><p>
They provide a hosting platform where you can develop connected, peer to peer applications
that can speak to each other without considering the other complexities such as firewall
rules and NAT etc,.
</p><p>
Venue: Xero, Level 1, 98 Customhouse Quay, Wellington
</p><p>
Please RSVP to kirkj@paradise.net.nz
</p><h3>Thurs 13 Nov, 1:10-5pm - MSDN Unplugged [Microsoft]
</h3>
This free half day event, organised by Microsoft, sees JD Trask and myself talking
on WPF, Silverlight and Visual Studio. More info <a href="http://www.microsoft.com/nz/events/unplugged/default.mspx">here</a>. 
<h3>Sat 6 &amp; Sun 7 Dec - SQL Pass Community Connection [NZ User Groups]
</h3>
A free, all day event focussed on SQL and related technologies. Overseas and NZ speakers.
Find out more at the <a href="http://www.dot.net.nz/Default.aspx?tabid=120">event
website</a>. 
<h3>Wed 3 Dec, 6pm - Overcoming your web insecurity [.NET User Group]
</h3><p>
In this hour-long session, I'll be introducing you to some of the threats your ASP.NET
website will face, and give you ideas on how to protect your users, company and yourself.
This applies to public facing and internal (intranet) applications.
</p><p>
RSVP details will be sent out to the announcement list closer to the date.
</p><p>
 
</p><p>
Thanks for reading this far!
</p><p>
Kirk
</p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b06f1678-d53c-43ae-96f5-4d6c384baa00" /></body>
      <title>Wellington .NET News - Nov 2008</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,b06f1678-d53c-43ae-96f5-4d6c384baa00.aspx</guid>
      <link>http://pageofwords.com/blog/2008/11/05/WellingtonNETNewsNov2008.aspx</link>
      <pubDate>Wed, 05 Nov 2008 21:47:02 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Hi,
&lt;/p&gt;
&lt;p&gt;
Many thanks to those who came along to our PDC Fireworks session last night. I hope
you had an interesting time hearing about what's coming on the horizon, and that your
families enjoyed meeting your geek friends! 
&lt;br /&gt;
A &lt;i&gt;huge&lt;/i&gt; thank you to our speakers who presented on such a wide range of topics
in a limited time. If you want to find out more or watch any sessions from the PDC,
you could visit the Channel 9 PDC site, or visit the blogs of the presenters:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.syringe.net.nz/"&gt;Chris Auld&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://james.newtonking.com/"&gt;James Newton-King&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.geekzone.co.nz/JamesHip"&gt;James Hippolite&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Mark Orange 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.chandima.net/Blog/"&gt;Chan Kulathilake&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://bgeek.net/"&gt;Owen Evans&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com"&gt;Kirk Jackson&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Also, a big thanks to those who helped set up and tidy up the room. Great job!
&lt;/p&gt;
&lt;p&gt;
The .NET user group meets once or twice monthly, usually on the first and third Wednesday
of the month. If you'd like to go on my mailing list for upcoming user group presentations,
please &lt;a href="mailto:kirkj@paradise.net.nz"&gt;email me&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you're interested in the &lt;a href="http://www.sharepointusergroup.net.nz/"&gt;Wellington
Sharepoint User Group&lt;/a&gt;, or the &lt;a href="http://www.dot.net.nz/wellington?tabid=101"&gt;Wellington
SQL User Group&lt;/a&gt;, make sure you follow the links to sign up to them.
&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;Upcoming Sessions:&lt;/b&gt;
&lt;/h2&gt;
There's a few events coming up in Wellington that are free to attend: 
&lt;h3&gt;Wed 19 Nov, 6pm - Microsoft .NET Services with Chaks Chandran [.NET User Group]
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/azure/netservices.mspx"&gt;Microsoft .Net Services&lt;/a&gt; is
a part of the recently announced &lt;a href="http://www.microsoft.com/azure/services.mspx"&gt;Microsoft
Azure Platform&lt;/a&gt;. What does Microsoft .Net Services provide ?
&lt;/p&gt;
&lt;p&gt;
Microsoft .Net Services consists of three main components:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/azure/servicebus.mspx"&gt;Service Bus&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/azure/accesscontrol.mspx"&gt;Access Control&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/azure/workflow.mspx"&gt;Workflow Services&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
They provide a hosting platform where you can develop connected, peer to peer applications
that can speak to each other without considering the other complexities such as firewall
rules and NAT etc,.
&lt;/p&gt;
&lt;p&gt;
Venue: Xero, Level 1, 98 Customhouse Quay, Wellington
&lt;/p&gt;
&lt;p&gt;
Please RSVP to kirkj@paradise.net.nz
&lt;/p&gt;
&lt;h3&gt;Thurs 13 Nov, 1:10-5pm - MSDN Unplugged [Microsoft]
&lt;/h3&gt;
This free half day event, organised by Microsoft, sees JD Trask and myself talking
on WPF, Silverlight and Visual Studio. More info &lt;a href="http://www.microsoft.com/nz/events/unplugged/default.mspx"&gt;here&lt;/a&gt;. 
&lt;h3&gt;Sat 6 &amp;amp; Sun 7 Dec - SQL Pass Community Connection [NZ User Groups]
&lt;/h3&gt;
A free, all day event focussed on SQL and related technologies. Overseas and NZ speakers.
Find out more at the &lt;a href="http://www.dot.net.nz/Default.aspx?tabid=120"&gt;event
website&lt;/a&gt;. 
&lt;h3&gt;Wed 3 Dec, 6pm - Overcoming your web insecurity [.NET User Group]
&lt;/h3&gt;
&lt;p&gt;
In this hour-long session, I'll be introducing you to some of the threats your ASP.NET
website will face, and give you ideas on how to protect your users, company and yourself.
This applies to public facing and internal (intranet) applications.
&lt;/p&gt;
&lt;p&gt;
RSVP details will be sent out to the announcement list closer to the date.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Thanks for reading this far!
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b06f1678-d53c-43ae-96f5-4d6c384baa00" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,b06f1678-d53c-43ae-96f5-4d6c384baa00.aspx</comments>
      <category>.NET;CodeCamp;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=11c689d2-db57-4f74-aabd-4df4523ea970</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,11c689d2-db57-4f74-aabd-4df4523ea970.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,11c689d2-db57-4f74-aabd-4df4523ea970.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=11c689d2-db57-4f74-aabd-4df4523ea970</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Reading about how dynamic is implemented in C# 4.0 over on <a href="http://blogs.msdn.com/samng/">Sam
Ng's blog</a>: <a href="http://blogs.msdn.com/samng/archive/2008/10/29/dynamic-in-c.aspx">Dynamic
in C#</a></p>
        <p>
How did they implement the new dynamic 'keyword' in C# 4.0? Using the DLR, of course!
</p>
        <p>
Very cool to see that the C# version of dynamic dispatch is implemented over the same
mechanisms for call actions, dynamic objects and binders to generate expression trees,
with some C# specifics in the binder to implement C#'s rules for dispatch etc.
</p>
        <p>
It's interesting to see the flow-on effects of using a dynamic type in an expression
and how the 'dynamism' then flows on to subsequent expressions or invocations involving
the resulting object.
</p>
        <p>
Quite a nice bit of work, and well explained by Sam. He's going to post more in the
series, so worth subscribing to <a href="http://blogs.msdn.com/samng/">his blog</a>.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=11c689d2-db57-4f74-aabd-4df4523ea970" />
      </body>
      <title>Dynamic in C# 4.0</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,11c689d2-db57-4f74-aabd-4df4523ea970.aspx</guid>
      <link>http://pageofwords.com/blog/2008/10/30/DynamicInC40.aspx</link>
      <pubDate>Thu, 30 Oct 2008 12:06:10 GMT</pubDate>
      <description>&lt;p&gt;
Reading about how dynamic is implemented in C# 4.0 over on &lt;a href="http://blogs.msdn.com/samng/"&gt;Sam
Ng's blog&lt;/a&gt;: &lt;a href="http://blogs.msdn.com/samng/archive/2008/10/29/dynamic-in-c.aspx"&gt;Dynamic
in C#&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
How did they implement the new dynamic 'keyword' in C# 4.0? Using the DLR, of course!
&lt;/p&gt;
&lt;p&gt;
Very cool to see that the C# version of dynamic dispatch is implemented over the same
mechanisms for call actions, dynamic objects and binders to generate expression trees,
with some C# specifics in the binder to implement C#'s rules for dispatch etc.
&lt;/p&gt;
&lt;p&gt;
It's interesting to see the flow-on effects of using a dynamic type in an expression
and how the 'dynamism' then flows on to subsequent expressions or invocations involving
the resulting object.
&lt;/p&gt;
&lt;p&gt;
Quite a nice bit of work, and well explained by Sam. He's going to post more in the
series, so worth subscribing to &lt;a href="http://blogs.msdn.com/samng/"&gt;his blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=11c689d2-db57-4f74-aabd-4df4523ea970" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,11c689d2-db57-4f74-aabd-4df4523ea970.aspx</comments>
      <category>.NET;CSharp4.0</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=bcb5c442-38fd-461d-ac25-65cac93b010f</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,bcb5c442-38fd-461d-ac25-65cac93b010f.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,bcb5c442-38fd-461d-ac25-65cac93b010f.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bcb5c442-38fd-461d-ac25-65cac93b010f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As linked to by the <a href="http://code.msdn.microsoft.com/csharpfuture">C# Futures</a> site,
here are the four main groups of C# 4.0 proposed features:
</p>
        <blockquote>
          <h5>
            <strong>Dynamic lookup</strong>
          </h5>
          <p>
Dynamic lookup allows you to write method, operator and indexer calls, property and
field accesses, and even object invocations which bypass the C# static type checking
and instead gets resolved at runtime. 
</p>
          <h5>
            <strong>Named and optional parameters</strong>
          </h5>
          <p>
Parameters in C# can now be specified as optional by providing a default value for
them in a member declaration. When the member is invoked, optional arguments can be
omitted. Furthermore, any argument can be passed by parameter name instead of position.
</p>
          <h5>
            <strong>COM specific interop features</strong>
          </h5>
          <p>
Dynamic lookup as well as named and optional parameters both help making programming
against COM less painful than today. On top of that, however, we are adding a number
of other small features that further improve the interop experience.
</p>
          <h5>
            <strong>Variance</strong>
          </h5>
          <p>
It used to be that an IEnumerable&lt;string&gt; wasn’t an IEnumerable&lt;object&gt;.
Now it is – C# embraces type safe “co-and contravariance” and common
BCL types are updated to take advantage of that.
</p>
        </blockquote>
        <p>
Most of these features are similar in spirit to what was shown at the Lang.NET symposium,
but with a few details worked out.
</p>
        <p>
The Dynamic features are going to be great when dealing with objects from DLR languages
or COM. Named parameters sounds kind-of nice, but not world-changing. Variance support
when assigning collections is going to be very handy, so is probably my favourite
of the four feature groups.
</p>
        <p>
Read more at the <a href="http://code.msdn.microsoft.com/csharpfuture">C# Futures</a> site.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=bcb5c442-38fd-461d-ac25-65cac93b010f" />
      </body>
      <title>C# 4.0 new features</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,bcb5c442-38fd-461d-ac25-65cac93b010f.aspx</guid>
      <link>http://pageofwords.com/blog/2008/10/28/C40NewFeatures.aspx</link>
      <pubDate>Tue, 28 Oct 2008 02:41:46 GMT</pubDate>
      <description>&lt;p&gt;
As linked to by the &lt;a href="http://code.msdn.microsoft.com/csharpfuture"&gt;C# Futures&lt;/a&gt; site,
here are the four main groups of C# 4.0 proposed features:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;h5&gt;&lt;strong&gt;Dynamic lookup&lt;/strong&gt;
&lt;/h5&gt;
&lt;p&gt;
Dynamic lookup allows you to write method, operator and indexer calls, property and
field accesses, and even object invocations which bypass the C# static type checking
and instead gets resolved at runtime. 
&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Named and optional parameters&lt;/strong&gt;
&lt;/h5&gt;
&lt;p&gt;
Parameters in C# can now be specified as optional by providing a default value for
them in a member declaration. When the member is invoked, optional arguments can be
omitted. Furthermore, any argument can be passed by parameter name instead of position.
&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;COM specific interop features&lt;/strong&gt;
&lt;/h5&gt;
&lt;p&gt;
Dynamic lookup as well as named and optional parameters both help making programming
against COM less painful than today. On top of that, however, we are adding a number
of other small features that further improve the interop experience.
&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Variance&lt;/strong&gt;
&lt;/h5&gt;
&lt;p&gt;
It used to be that an IEnumerable&amp;lt;string&amp;gt; wasn&amp;#8217;t an IEnumerable&amp;lt;object&amp;gt;.
Now it is &amp;#8211; C# embraces type safe &amp;#8220;co-and contravariance&amp;#8221; and common
BCL types are updated to take advantage of that.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Most of these features are similar in spirit to what was shown at the Lang.NET symposium,
but with a few details worked out.
&lt;/p&gt;
&lt;p&gt;
The Dynamic features are going to be great when dealing with objects from DLR languages
or COM. Named parameters sounds kind-of nice, but not world-changing. Variance support
when assigning collections is going to be very handy, so is probably my favourite
of the four feature groups.
&lt;/p&gt;
&lt;p&gt;
Read more at the &lt;a href="http://code.msdn.microsoft.com/csharpfuture"&gt;C# Futures&lt;/a&gt; site.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=bcb5c442-38fd-461d-ac25-65cac93b010f" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,bcb5c442-38fd-461d-ac25-65cac93b010f.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=1332f30e-9095-4ee4-b484-a2d1bfdcc4b9</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,1332f30e-9095-4ee4-b484-a2d1bfdcc4b9.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,1332f30e-9095-4ee4-b484-a2d1bfdcc4b9.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1332f30e-9095-4ee4-b484-a2d1bfdcc4b9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A common scenario is wanting to delete an item while iterating over a collection using
foreach:
</p>
        <div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;">
          <p style="margin: 0px;">
            <span style="color: blue;">foreach</span> (<span style="color: blue;">string</span> name <span style="color: blue;">in</span> names)
</p>
          <p style="margin: 0px;">
{
</p>
          <p style="margin: 0px;">
    <span style="color: blue;">if</span> (name == <span style="color: rgb(163, 21, 21);">"Kirk"</span>)
</p>
          <p style="margin: 0px;">
    {
</p>
          <p style="margin: 0px;">
        names.Remove(name);
</p>
          <p style="margin: 0px;">
    }
</p>
          <p style="margin: 0px;">
}
</p>
        </div>
        <p>
Unfortunately, this will give the dreaded InvalidOperationException:
</p>
        <blockquote>
          <p>
Collection was modified; enumeration operation may not execute.
</p>
        </blockquote>
        <p>
This is because modifying the state of a collection invalidates the enumerator that <strong>foreach</strong> uses
behind the scenes to loop over the collection.
</p>
        <p>
A common work-around is to convert the <strong>foreach</strong> to a <strong>for</strong> loop:
</p>
        <div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;">
          <p style="margin: 0px;">
            <span style="color: blue;">for</span> (<span style="color: blue;">int</span> i = names.Count
- 1; i &gt;= 0; i--)
</p>
          <p style="margin: 0px;">
{
</p>
          <p style="margin: 0px;">
    <span style="color: blue;">if</span> (names[i] == <span style="color: rgb(163, 21, 21);">"Kirk"</span>)
</p>
          <p style="margin: 0px;">
    {
</p>
          <p style="margin: 0px;">
        names.RemoveAt(i);
</p>
          <p style="margin: 0px;">
    }
</p>
          <p style="margin: 0px;">
}
</p>
        </div>
        <p>
You'll notice that the for loop goes <em>backwards</em> from the end of the list (position:
Count - 1) back to the start (position: 0), so that when an item is removed, our current
index i is still a valid position in the list.
</p>
        <p>
How do you do it?
</p>
        <p>
Kirk
</p>
        <p>
Source (such that it is) <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/CTipRemovemodifyordeleteitemwithinaforea_1508A/Program.cs" target="_blank">Program.txt</a></p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1332f30e-9095-4ee4-b484-a2d1bfdcc4b9" />
      </body>
      <title>C# Tip: Remove, modify or delete item within a foreach</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,1332f30e-9095-4ee4-b484-a2d1bfdcc4b9.aspx</guid>
      <link>http://pageofwords.com/blog/2008/10/23/CTipRemoveModifyOrDeleteItemWithinAForeach.aspx</link>
      <pubDate>Thu, 23 Oct 2008 11:08:06 GMT</pubDate>
      <description>&lt;p&gt;
A common scenario is wanting to delete an item while iterating over a collection using
foreach:
&lt;/p&gt;
&lt;div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt; name &lt;span style="color: blue;"&gt;in&lt;/span&gt; names)
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
{
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (name == &lt;span style="color: rgb(163, 21, 21);"&gt;"Kirk"&lt;/span&gt;)
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; names.Remove(name);
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Unfortunately, this will give the dreaded InvalidOperationException:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Collection was modified; enumeration operation may not execute.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This is because modifying the state of a collection invalidates the enumerator that &lt;strong&gt;foreach&lt;/strong&gt; uses
behind the scenes to loop over the collection.
&lt;/p&gt;
&lt;p&gt;
A common work-around is to convert the &lt;strong&gt;foreach&lt;/strong&gt; to a &lt;strong&gt;for&lt;/strong&gt; loop:
&lt;/p&gt;
&lt;div style="background: white none repeat scroll 0% 0%; font-size: 10pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: courier new;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = names.Count
- 1; i &amp;gt;= 0; i--)
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
{
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (names[i] == &lt;span style="color: rgb(163, 21, 21);"&gt;"Kirk"&lt;/span&gt;)
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; names.RemoveAt(i);
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
You'll notice that the for loop goes &lt;em&gt;backwards&lt;/em&gt; from the end of the list (position:
Count - 1) back to the start (position: 0), so that when an item is removed, our current
index i is still a valid position in the list.
&lt;/p&gt;
&lt;p&gt;
How do you do it?
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;p&gt;
Source (such that it is) &lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/CTipRemovemodifyordeleteitemwithinaforea_1508A/Program.cs" target="_blank"&gt;Program.txt&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1332f30e-9095-4ee4-b484-a2d1bfdcc4b9" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,1332f30e-9095-4ee4-b484-a2d1bfdcc4b9.aspx</comments>
      <category>.NET;CSharpTips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=6ade3ffd-6ebc-422f-b575-74aeafbd74d9</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,6ade3ffd-6ebc-422f-b575-74aeafbd74d9.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,6ade3ffd-6ebc-422f-b575-74aeafbd74d9.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6ade3ffd-6ebc-422f-b575-74aeafbd74d9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Cool to see that Amazon will be offering Windows pay-as-you-go EC2 instances:
</p>
        <p>
          <a href="http://aws.typepad.com/aws/2008/10/coming-soon-ama.html">Coming soon: Amazon
EC2 with Windows</a>
        </p>
        <p>
It will be good to have another option for running SQL and ASP.NET solutions out in
the cloud.
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=6ade3ffd-6ebc-422f-b575-74aeafbd74d9" />
      </body>
      <title>Amazon to offer Windows cloud computer by end of 2008</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,6ade3ffd-6ebc-422f-b575-74aeafbd74d9.aspx</guid>
      <link>http://pageofwords.com/blog/2008/10/02/AmazonToOfferWindowsCloudComputerByEndOf2008.aspx</link>
      <pubDate>Thu, 02 Oct 2008 09:14:13 GMT</pubDate>
      <description>&lt;p&gt;
Cool to see that Amazon will be offering Windows pay-as-you-go EC2 instances:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://aws.typepad.com/aws/2008/10/coming-soon-ama.html"&gt;Coming soon: Amazon
EC2 with Windows&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It will be good to have another option for running SQL and ASP.NET solutions out in
the cloud.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=6ade3ffd-6ebc-422f-b575-74aeafbd74d9" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,6ade3ffd-6ebc-422f-b575-74aeafbd74d9.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=cc80d637-0a51-4fc8-abe6-21846ff64224</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,cc80d637-0a51-4fc8-abe6-21846ff64224.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,cc80d637-0a51-4fc8-abe6-21846ff64224.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=cc80d637-0a51-4fc8-abe6-21846ff64224</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/saraford/archive/2008/09/26/matt-s-snippet-designer-finally-sees-the-light-of-day.aspx">Sara
Ford points to</a> the release of <a href="http://www.codeplex.com/SnippetDesigner">Snippet
Designer</a> by <a href="http://blogs.msdn.com/matt/">Matthew Manela</a>. 
</p>
        <p>
Snippets are a remarkably cool productivity tool within Visual Studio. I say "remarkable",
because many people don't even know they exist!
</p>
        <p>
It's great to have a UI over the top of the snippet XML files, which are a little
painful to edit by hand. Snippet Designer lets you select a section of code, and export
it to the designer to create a snippet:
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_6.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="514" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_2.png" width="651" border="0" />
          </a>
        </p>
        <p>
(I had to cheat to get the screenshot of the menu... anyone know how to do that?)
</p>
        <p>
Then you're dropped into the Snippet Explorer's designer surface, where you have three
or four simple steps:
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_8.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="354" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_3.png" width="644" border="0" />
          </a>
        </p>
        <ol>
          <li>
Right-click a symbol and create a replacement (above, I turned the 'argument' variable
into a replacement). A replacement is text that the user can edit when using your
snippet. 
</li>
          <li>
Edit the details of the replacement, including the default value and tooltip text. 
</li>
          <li>
Add a shortcut to your snippet. 
</li>
          <li>
(Optionally) Enter $selected$ $end$ where you'd like the cursor to appear after the
snippet is finished. This is imported for SurroundsWith snippets, as the text you're
surrounding will be replaced here. 
</li>
        </ol>
        <p>
Then simply save the snippet into your snippets directory inside My Documents (the
default location is probably right), and now you can use your snippet when editing
code.
</p>
        <p>
Type the shortcut string (mine was 'fow'):
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_10.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="273" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_4.png" width="481" border="0" />
          </a>
        </p>
        <p>
Press "Tab" "Tab":
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_12.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="194" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_5.png" width="326" border="0" />
          </a>
        </p>
        <p>
And you end up in the first replacement variable, with the default value entered.
Over-write the text with what it should be, and press Tab to jump to the next replacement.
Continue pressing tab until everything is correct, and press Enter. You'll jump to
the middle of the replacement text: 
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_14.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="88" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_6.png" width="244" border="0" />
          </a>
        </p>
        <p>
The snippet file is just XML, so you can edit it directly, or copy it to other computers
easily.
</p>
        <p>
There are a lot of snippets installed out of the box, you can browse them using the
old Code Snippets Manager (under the Tools menu), or using the new Snippets Explorer
installed by the Snippets Designer (under View -&gt; Other Windows).
</p>
        <p>
I'll be showing off the Snippets support in future Visual Studio tips n tricks talks.
If you're interested in more tips, I have a <a href="http://pageofwords.com/blog/CategoryView,category,VS2008Tips.aspx">Visual
Studio 2008 series</a> on this blog, or you can visit <a href="http://blogs.msdn.com/saraford/">Sara
Ford's blog</a>.
</p>
        <p>
Previous:
</p>
        <ul>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/09/VisualStudioTipsNTricksDEV313.aspx">Visual
Studio Tips n Tricks (DEV313)</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/10/VisualStudioCopyReferences.aspx">Visual
Studio - Copy references</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/11/TurnOffOutliningRegionsInVisualStudio.aspx">Turn
off outlining / regions in Visual Studio</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/12/VisualStudio2008TipOfTheDayReliveTheSeries.aspx">Visual
Studio 2008 tip of the day - relive the series</a>
          </li>
          <li>
            <a href="http://pageofwords.com/blog/2008/09/16/ExploreFilesFromVisualStudio.aspx">Explore
files from Visual Studio</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=cc80d637-0a51-4fc8-abe6-21846ff64224" />
      </body>
      <title>Snippet Designer released</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,cc80d637-0a51-4fc8-abe6-21846ff64224.aspx</guid>
      <link>http://pageofwords.com/blog/2008/09/26/SnippetDesignerReleased.aspx</link>
      <pubDate>Fri, 26 Sep 2008 23:29:59 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.msdn.com/saraford/archive/2008/09/26/matt-s-snippet-designer-finally-sees-the-light-of-day.aspx"&gt;Sara
Ford points to&lt;/a&gt; the release of &lt;a href="http://www.codeplex.com/SnippetDesigner"&gt;Snippet
Designer&lt;/a&gt; by &lt;a href="http://blogs.msdn.com/matt/"&gt;Matthew Manela&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Snippets are a remarkably cool productivity tool within Visual Studio. I say &amp;quot;remarkable&amp;quot;,
because many people don't even know they exist!
&lt;/p&gt;
&lt;p&gt;
It's great to have a UI over the top of the snippet XML files, which are a little
painful to edit by hand. Snippet Designer lets you select a section of code, and export
it to the designer to create a snippet:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="514" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_2.png" width="651" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
(I had to cheat to get the screenshot of the menu... anyone know how to do that?)
&lt;/p&gt;
&lt;p&gt;
Then you're dropped into the Snippet Explorer's designer surface, where you have three
or four simple steps:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="354" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_3.png" width="644" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Right-click a symbol and create a replacement (above, I turned the 'argument' variable
into a replacement). A replacement is text that the user can edit when using your
snippet. 
&lt;/li&gt;
&lt;li&gt;
Edit the details of the replacement, including the default value and tooltip text. 
&lt;/li&gt;
&lt;li&gt;
Add a shortcut to your snippet. 
&lt;/li&gt;
&lt;li&gt;
(Optionally) Enter $selected$ $end$ where you'd like the cursor to appear after the
snippet is finished. This is imported for SurroundsWith snippets, as the text you're
surrounding will be replaced here. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Then simply save the snippet into your snippets directory inside My Documents (the
default location is probably right), and now you can use your snippet when editing
code.
&lt;/p&gt;
&lt;p&gt;
Type the shortcut string (mine was 'fow'):
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="273" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_4.png" width="481" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Press &amp;quot;Tab&amp;quot; &amp;quot;Tab&amp;quot;:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="194" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_5.png" width="326" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
And you end up in the first replacement variable, with the default value entered.
Over-write the text with what it should be, and press Tab to jump to the next replacement.
Continue pressing tab until everything is correct, and press Enter. You'll jump to
the middle of the replacement text: 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="88" alt="image" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/SnippetDesignerreleased_940A/image_thumb_6.png" width="244" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The snippet file is just XML, so you can edit it directly, or copy it to other computers
easily.
&lt;/p&gt;
&lt;p&gt;
There are a lot of snippets installed out of the box, you can browse them using the
old Code Snippets Manager (under the Tools menu), or using the new Snippets Explorer
installed by the Snippets Designer (under View -&amp;gt; Other Windows).
&lt;/p&gt;
&lt;p&gt;
I'll be showing off the Snippets support in future Visual Studio tips n tricks talks.
If you're interested in more tips, I have a &lt;a href="http://pageofwords.com/blog/CategoryView,category,VS2008Tips.aspx"&gt;Visual
Studio 2008 series&lt;/a&gt; on this blog, or you can visit &lt;a href="http://blogs.msdn.com/saraford/"&gt;Sara
Ford's blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Previous:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/09/VisualStudioTipsNTricksDEV313.aspx"&gt;Visual
Studio Tips n Tricks (DEV313)&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/10/VisualStudioCopyReferences.aspx"&gt;Visual
Studio - Copy references&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/11/TurnOffOutliningRegionsInVisualStudio.aspx"&gt;Turn
off outlining / regions in Visual Studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/12/VisualStudio2008TipOfTheDayReliveTheSeries.aspx"&gt;Visual
Studio 2008 tip of the day - relive the series&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://pageofwords.com/blog/2008/09/16/ExploreFilesFromVisualStudio.aspx"&gt;Explore
files from Visual Studio&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=cc80d637-0a51-4fc8-abe6-21846ff64224" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,cc80d637-0a51-4fc8-abe6-21846ff64224.aspx</comments>
      <category>.NET;VS2008Tips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e19833bf-c9fa-4517-891b-17e00ac9e0de</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e19833bf-c9fa-4517-891b-17e00ac9e0de.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e19833bf-c9fa-4517-891b-17e00ac9e0de.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e19833bf-c9fa-4517-891b-17e00ac9e0de</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last month the guys from <a href="http://www.mindscape.co.nz">Mindscape</a> released
a <a href="http://www.mindscape.co.nz/Products/vsfileexplorer/">Visual Studio File
Explorer Addin</a>. This is really useful if you don't have good source control integration
within Visual Studio, or you want access to the full goodness available from an explorer
window, but within Visual Studio.
</p>
        <p>
The feature list:
</p>
        <ul>
          <li>
Fully Shell Enabled – So shell extensions like TortoiseSVN work just fine. 
</li>
          <li>
Command Prompt Here – Opens a command prompt at the current folder. 
</li>
          <li>
Snap to Solution – Sets the root folder to the current solution’s folder. 
</li>
          <li>
Split View – Windows Explorer style. 
</li>
          <li>
Open Item – Either in Visual Studio or the registered application. 
</li>
          <li>
Options Dialog – For configuring the add-in. 
</li>
        </ul>
        <p>
And a screenshot:
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/ExplorefilesfromVisualStudio_B702/dump1_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="323" alt="dump1" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/ExplorefilesfromVisualStudio_B702/dump1_thumb.png" width="452" border="0" />
          </a>
        </p>
        <p>
It's good at twice the price! Download for free from the Mindscape site: <a href="http://www.mindscape.co.nz/Products/vsfileexplorer/">Visual
Studio File Explorer Addin</a></p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e19833bf-c9fa-4517-891b-17e00ac9e0de" />
      </body>
      <title>Explore files from Visual Studio</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e19833bf-c9fa-4517-891b-17e00ac9e0de.aspx</guid>
      <link>http://pageofwords.com/blog/2008/09/16/ExploreFilesFromVisualStudio.aspx</link>
      <pubDate>Tue, 16 Sep 2008 01:00:50 GMT</pubDate>
      <description>&lt;p&gt;
Last month the guys from &lt;a href="http://www.mindscape.co.nz"&gt;Mindscape&lt;/a&gt; released
a &lt;a href="http://www.mindscape.co.nz/Products/vsfileexplorer/"&gt;Visual Studio File
Explorer Addin&lt;/a&gt;. This is really useful if you don't have good source control integration
within Visual Studio, or you want access to the full goodness available from an explorer
window, but within Visual Studio.
&lt;/p&gt;
&lt;p&gt;
The feature list:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Fully Shell Enabled &amp;#8211; So shell extensions like TortoiseSVN work just fine. 
&lt;/li&gt;
&lt;li&gt;
Command Prompt Here &amp;#8211; Opens a command prompt at the current folder. 
&lt;/li&gt;
&lt;li&gt;
Snap to Solution &amp;#8211; Sets the root folder to the current solution&amp;#8217;s folder. 
&lt;/li&gt;
&lt;li&gt;
Split View &amp;#8211; Windows Explorer style. 
&lt;/li&gt;
&lt;li&gt;
Open Item &amp;#8211; Either in Visual Studio or the registered application. 
&lt;/li&gt;
&lt;li&gt;
Options Dialog &amp;#8211; For configuring the add-in. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
And a screenshot:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/ExplorefilesfromVisualStudio_B702/dump1_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="323" alt="dump1" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/ExplorefilesfromVisualStudio_B702/dump1_thumb.png" width="452" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It's good at twice the price! Download for free from the Mindscape site: &lt;a href="http://www.mindscape.co.nz/Products/vsfileexplorer/"&gt;Visual
Studio File Explorer Addin&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e19833bf-c9fa-4517-891b-17e00ac9e0de" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e19833bf-c9fa-4517-891b-17e00ac9e0de.aspx</comments>
      <category>.NET;VS2008Tips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=5075ea9e-3e73-4dbc-bc00-36816bfb24e1</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,5075ea9e-3e73-4dbc-bc00-36816bfb24e1.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,5075ea9e-3e73-4dbc-bc00-36816bfb24e1.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5075ea9e-3e73-4dbc-bc00-36816bfb24e1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/saraford/">Sara Ford</a> has been publishing a great
series of Visual Studio 2008 tips of the day, since <a href="http://blogs.msdn.com/saraford/archive/2007/07/21/introducing-visual-studio-2008-tip-of-the-day.aspx">July
2007</a>.
</p>
        <p>
I have given a couple of <a href="http://pageofwords.com/blog/2008/09/09/VisualStudioTipsNTricksDEV313.aspx">Visual
Studio tips'n'tricks talks</a> lately, and have recommended to the audience that they
should go back to the beginning of the series and read her tips from the start.
</p>
        <p>
If the thought of reading over a years worth of daily posts <em>in a web browser</em> scares
you, I have assembled a Yahoo Pipe that grabs posts from 410 days ago and sends them
out in an RSS feed, just like it was July 2007:
</p>
        <p>
          <a href="http://pipes.yahoo.com/cpkirk/saraford410">http://pipes.yahoo.com/cpkirk/saraford410</a>
        </p>
        <p>
Each day you'll get the most recent posts from 410 days ago showing up in your feed
reader.
</p>
        <p>
Click the above link, and choose one of the options to add it to your feed reader,
or you can even subscribe to email alerts each time there is new content (well, actually
it's 410 day old content masquerading as new content).
</p>
        <h3>Yahoo Pipes
</h3>
        <p>
Yahoo Pipes are pretty cool, they let you do transformations on a bunch of different
types of data sources, and then re-expose them as a new feed.
</p>
        <p>
In this case I have used an RSS feed from a <a href="http://www.google.co.nz/blogsearch?q=site:http://blogs.msdn.com/saraford/&amp;ie=UTF-8&amp;scoring=d">Google
blog search</a>, as they allow you to search for posts on a given site and return
all the results Google has cached. In Sara's case, Google will return 368 posts whereas
her own feed only gives the most recent 15.
</p>
        <p>
The pipe just builds up the right query string for Google, and then passes the url
to the feed fetcher. The source is visible when you <a href="http://pipes.yahoo.com/cpkirk/saraford410">visit
the pipe</a>, although I have to admit that it's pretty simple and you could probably
figure it out yourself :)
</p>
        <h3>Blog series
</h3>
        <p>
It's interesting when you try to join part-way through a long running series on someone's
blog.
</p>
        <p>
The newest post at the top of their site (and your feed reader) is halfway through
the series, so you have to scroll or read through the archives to get the earlier
posts.
</p>
        <p>
I often find when I stumble across "Part 7 of 11" blog posts that entering
late puts me off subscribing to that blog, because of the weight of having to read
so much to catch up so I can join the conversation.
</p>
        <p>
Perhaps having a "Subscribe to this series from the beginning" link using
a similar trickle fed time shifted approach would help people overcome that?
</p>
        <h3>Irony
</h3>
        <p>
It did feel a little like having <a href="http://en.wikipedia.org/wiki/Irony">10,000
spoons when all I needed was a knife</a> to use a <a href="http://pipes.yahoo.com/cpkirk/saraford410">Yahoo
beta product</a> to pull data from a <a href="http://www.google.co.nz/blogsearch?q=site:http://blogs.msdn.com/saraford/&amp;ie=UTF-8&amp;scoring=d">Google
search</a> to send people to a <a href="http://blogs.msdn.com/saraford/">Microsoft
employee's</a> blog posts. Ain't the internet great!
</p>
        <p>
Many thanks to <a href="http://blogs.msdn.com/saraford/">Sara</a> for the great series.
</p>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=5075ea9e-3e73-4dbc-bc00-36816bfb24e1" />
      </body>
      <title>Visual Studio 2008 tip of the day - relive the series</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,5075ea9e-3e73-4dbc-bc00-36816bfb24e1.aspx</guid>
      <link>http://pageofwords.com/blog/2008/09/12/VisualStudio2008TipOfTheDayReliveTheSeries.aspx</link>
      <pubDate>Fri, 12 Sep 2008 12:16:34 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.msdn.com/saraford/"&gt;Sara Ford&lt;/a&gt; has been publishing a great
series of Visual Studio 2008 tips of the day, since &lt;a href="http://blogs.msdn.com/saraford/archive/2007/07/21/introducing-visual-studio-2008-tip-of-the-day.aspx"&gt;July
2007&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I have given a couple of &lt;a href="http://pageofwords.com/blog/2008/09/09/VisualStudioTipsNTricksDEV313.aspx"&gt;Visual
Studio tips'n'tricks talks&lt;/a&gt; lately, and have recommended to the audience that they
should go back to the beginning of the series and read her tips from the start.
&lt;/p&gt;
&lt;p&gt;
If the thought of reading over a years worth of daily posts &lt;em&gt;in a web browser&lt;/em&gt; scares
you, I have assembled a Yahoo Pipe that grabs posts from 410 days ago and sends them
out in an RSS feed, just like it was July 2007:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pipes.yahoo.com/cpkirk/saraford410"&gt;http://pipes.yahoo.com/cpkirk/saraford410&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Each day you'll get the most recent posts from 410 days ago showing up in your feed
reader.
&lt;/p&gt;
&lt;p&gt;
Click the above link, and choose one of the options to add it to your feed reader,
or you can even subscribe to email alerts each time there is new content (well, actually
it's 410 day old content masquerading as new content).
&lt;/p&gt;
&lt;h3&gt;Yahoo Pipes
&lt;/h3&gt;
&lt;p&gt;
Yahoo Pipes are pretty cool, they let you do transformations on a bunch of different
types of data sources, and then re-expose them as a new feed.
&lt;/p&gt;
&lt;p&gt;
In this case I have used an RSS feed from a &lt;a href="http://www.google.co.nz/blogsearch?q=site:http://blogs.msdn.com/saraford/&amp;amp;ie=UTF-8&amp;amp;scoring=d"&gt;Google
blog search&lt;/a&gt;, as they allow you to search for posts on a given site and return
all the results Google has cached. In Sara's case, Google will return 368 posts whereas
her own feed only gives the most recent 15.
&lt;/p&gt;
&lt;p&gt;
The pipe just builds up the right query string for Google, and then passes the url
to the feed fetcher. The source is visible when you &lt;a href="http://pipes.yahoo.com/cpkirk/saraford410"&gt;visit
the pipe&lt;/a&gt;, although I have to admit that it's pretty simple and you could probably
figure it out yourself :)
&lt;/p&gt;
&lt;h3&gt;Blog series
&lt;/h3&gt;
&lt;p&gt;
It's interesting when you try to join part-way through a long running series on someone's
blog.
&lt;/p&gt;
&lt;p&gt;
The newest post at the top of their site (and your feed reader) is halfway through
the series, so you have to scroll or read through the archives to get the earlier
posts.
&lt;/p&gt;
&lt;p&gt;
I often find when I stumble across &amp;quot;Part 7 of 11&amp;quot; blog posts that entering
late puts me off subscribing to that blog, because of the weight of having to read
so much to catch up so I can join the conversation.
&lt;/p&gt;
&lt;p&gt;
Perhaps having a &amp;quot;Subscribe to this series from the beginning&amp;quot; link using
a similar trickle fed time shifted approach would help people overcome that?
&lt;/p&gt;
&lt;h3&gt;Irony
&lt;/h3&gt;
&lt;p&gt;
It did feel a little like having &lt;a href="http://en.wikipedia.org/wiki/Irony"&gt;10,000
spoons when all I needed was a knife&lt;/a&gt; to use a &lt;a href="http://pipes.yahoo.com/cpkirk/saraford410"&gt;Yahoo
beta product&lt;/a&gt; to pull data from a &lt;a href="http://www.google.co.nz/blogsearch?q=site:http://blogs.msdn.com/saraford/&amp;amp;ie=UTF-8&amp;amp;scoring=d"&gt;Google
search&lt;/a&gt; to send people to a &lt;a href="http://blogs.msdn.com/saraford/"&gt;Microsoft
employee's&lt;/a&gt; blog posts. Ain't the internet great!
&lt;/p&gt;
&lt;p&gt;
Many thanks to &lt;a href="http://blogs.msdn.com/saraford/"&gt;Sara&lt;/a&gt; for the great series.
&lt;/p&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=5075ea9e-3e73-4dbc-bc00-36816bfb24e1" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,5075ea9e-3e73-4dbc-bc00-36816bfb24e1.aspx</comments>
      <category>.NET;VS2008Tips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=718332c8-cfb6-46f8-aa41-1b922885e486</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,718332c8-cfb6-46f8-aa41-1b922885e486.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,718332c8-cfb6-46f8-aa41-1b922885e486.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=718332c8-cfb6-46f8-aa41-1b922885e486</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I got asked this last night in Christchurch: "How do you make it so regions are always
expanded?"
</p>
        <p>
There's a couple of different ways to do this:
</p>
        <ul>
          <li>
You can turn off outlining altogether, in the Advanced Settings under C#: 
<br /><a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/TurnoffoutliningregionsinVisualStudio_AAC3/OutliningToggle.png"><img style="border: 0px none ;" alt="OutliningToggle" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/TurnoffoutliningregionsinVisualStudio_AAC3/OutliningToggle_thumb.png" width="244" border="0" height="109" /></a></li>
          <li>
You can learn the keyboard shortcuts for expanding and contracting outlines: <a href="http://blogs.msdn.com/saraford/archive/2007/09/12/did-you-know-how-to-collapse-and-expand-code.aspx">Did
you know how to collapse and expand code - Sara Fords blog</a></li>
          <li>
Or, you could reduce your use of regions (I've found they're often used to hide code,
when really it should be refactored).</li>
        </ul>
        <p>
Kirk
</p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=718332c8-cfb6-46f8-aa41-1b922885e486" />
      </body>
      <title>Turn off outlining / regions in Visual Studio</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,718332c8-cfb6-46f8-aa41-1b922885e486.aspx</guid>
      <link>http://pageofwords.com/blog/2008/09/11/TurnOffOutliningRegionsInVisualStudio.aspx</link>
      <pubDate>Thu, 11 Sep 2008 00:08:41 GMT</pubDate>
      <description>&lt;p&gt;
I got asked this last night in Christchurch: "How do you make it so regions are always
expanded?"
&lt;/p&gt;
&lt;p&gt;
There's a couple of different ways to do this:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
You can turn off outlining altogether, in the Advanced Settings under C#: 
&lt;br&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/TurnoffoutliningregionsinVisualStudio_AAC3/OutliningToggle.png"&gt;&lt;img style="border: 0px none ;" alt="OutliningToggle" src="http://pageofwords.com/blog/content/binary/WindowsLiveWriter/TurnoffoutliningregionsinVisualStudio_AAC3/OutliningToggle_thumb.png" width="244" border="0" height="109"&gt;&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
You can learn the keyboard shortcuts for expanding and contracting outlines: &lt;a href="http://blogs.msdn.com/saraford/archive/2007/09/12/did-you-know-how-to-collapse-and-expand-code.aspx"&gt;Did
you know how to collapse and expand code - Sara Fords blog&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Or, you could reduce your use of regions (I've found they're often used to hide code,
when really it should be refactored).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Kirk
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=718332c8-cfb6-46f8-aa41-1b922885e486" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,718332c8-cfb6-46f8-aa41-1b922885e486.aspx</comments>
      <category>.NET;VS2008Tips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=10958ac1-19f7-4cc7-b1ca-c0b04d675161</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,10958ac1-19f7-4cc7-b1ca-c0b04d675161.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,10958ac1-19f7-4cc7-b1ca-c0b04d675161.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=10958ac1-19f7-4cc7-b1ca-c0b04d675161</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">That was embarrassing. I went to demo the
"Copy References" feature in Visual Studio 2008, and I couldn't remember how to do
it.<br /><br />
That's because it's not in the standard install of Visual Studio, but is part of the <a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31">PowerCommands
for Visual Studio 2008</a> package.<br /><br />
Check out the feature list that I've copied below. Some really useful stuff, you should <a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31">download
now</a> and install it!<br /><br /><strong>Enable/Disable PowerCommands in Options dialog<br /></strong>This feature allows you to select which commands to enable in the Visual
Studio IDE.  Point to the Tools menu, then click Options.  Expand the PowerCommands
options, then click Commands.  Check the commands you would like to enable.<br />
Note: All power commands are initially defaulted Enabled.<br /><br /><div class="wikidoc"><strong>Format document on save / Remove and Sort Usings on save</strong><br />
The Format document on save option formats the tabs, spaces, and so on of the document
being saved.   It is equivalent to pointing to the Edit menu, clicking Advanced,
and then clicking Format Document. The Remove and sort usings option removes unused
using statements and sorts the remaining using statements in the document being saved.<br />
Note: The Remove and sort usings option is only available for C# documents.<br />
Note:  Format document on save and Remove and sort usings both are initially
defaulted OFF.<br /><br /></div><div class="wikidoc"><strong>Clear All Panes</strong><br />
This command clears all output panes. It can be executed from the button on the toolbar
of the Output window.<br /><br /></div><div class="wikidoc"><strong>Copy Path</strong><br />
This command copies the full path of the currently selected item to the clipboard.
It can be executed by right-clicking one of these nodes in the Solution Explorer:<br />
The solution node; A project node; Any project item node; Any folder. 
<br /><br /></div><div class="wikidoc"><strong>Email CodeSnippet</strong><br />
To email the lines of text you select in the code editor, right-click anywhere in
the editor and then click Email CodeSnippet. 
</div><div class="wikidoc">Insert Guid Attribute<br />
This command adds a Guid attribute to a selected class.  From the code editor,
right-click anywhere within the class definition, then click Insert Guid Attribute.<br /><br /></div><div class="wikidoc"><strong>Show All Files</strong><br />
This command shows the hidden files in all projects displayed in the Solution Explorer
when the solution node is selected.  It enhances the Show All Files button, which
normally shows only the hidden files in the selected project  node.<br /><br /></div><div class="wikidoc"><strong>Undo Close</strong><br />
This command reopens a closed document , returning the cursor to its last position. 
To reopen the most recently closed document, point to the Edit menu, then click Undo
Close.  Alternately, you can use the Ctrl+Shift+Z shortcut.<br />
To reopen any other recently closed document, point to the View menu, click Other
Windows, and then click Undo Close Window.  The Undo Close window appears, typically
next to the Output window. Double-click any document in the list to reopen it.<br /><br /><b>Collapse Projects</b><br />
This command collapses a hierarchy in the solution explorer starting from the root
selected node. It can be executed from three different places: solution, solution
folders and project nodes respectively.<br /><br /><b>Copy Class</b><br />
This command copies a selected class entire content to the clipboard. It can be executed
from a single project item or a project item with dependent sub items.<br /><br /><b>Paste Class</b><br />
This command pastes a class entire content from the clipboard. It can be executed
from a project or folder node.<br /><br /><b>Copy References</b><br />
This command copies a reference or set of references to the clipboard. It can be executed
from the references node, a single reference node or set of reference nodes.<br /><br /><b>Paste References</b><br />
This command pastes a reference or set of references from the clipboard. It can be
executed from different places depending on the type of project. For CSharp projects
it can be executed from the references node. For Visual Basic and Website projects
it can be executed from the project node.<br /><br /><b>Copy As Project Reference</b><br />
This command copies a project as a project reference to the clipboard. It can be executed
from a project node.<br /><br /><b>Edit Project File</b><br />
This command opens the MSBuild project file for a selected project inside Visual Studio.
It can be executed from a project node.<br /><br /><b>Open Containing Folder</b><br />
This command opens a Windows Explorer window pointing to the physical path of a selected
item. It can be executed from a project item node<br /><br /><b>Open Command Prompt</b><br />
This command opens a Visual Studio command prompt pointing to the physical path of
a selected item. It can be executed from four different places: solution, project,
folder and project item nodes respectively.<br /><br /><b>Unload Projects</b><br />
This command unloads all projects in a solution. It can be executed from the solution
node.<br /><br /><b>Reload Projects</b><br />
This command reloads all unloaded projects in a solution. It can be executed from
the solution node.<br /><br /><b>Remove and Sort Usings</b><br />
This command removes and sort using statements for all classes given a project. It
can be executed from a solution node or a single project node.<br />
Note: The Remove and Sort Usings feature is only available for C# projects since the
C# editor implements this feature as a command in the C# editor (which this command
calls for each .cs file in the project).<br /><br /><b>Extract Constant</b><br />
This command creates a constant definition statement for a selected text. It can be
executed from the code window over a selected text.<br /><br /><b>Clear Recent File List</b><br />
This command clears the Visual Studio recent file list.<br /><br /><b>Clear Recent Project List</b><br />
This command clears the Visual Studio recent project list.<br /><br /><b>Transform Templates</b><br />
This command executes the associated custom tool with text templates items. It can
be executed from a DSL project node or a folder node.<br /><br /><b>Close All</b><br />
This command closes all documents. It can be executed from a document tab.
</div><br /><br /><br />
Kirk<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=10958ac1-19f7-4cc7-b1ca-c0b04d675161" /></body>
      <title>Visual Studio - Copy references</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,10958ac1-19f7-4cc7-b1ca-c0b04d675161.aspx</guid>
      <link>http://pageofwords.com/blog/2008/09/10/VisualStudioCopyReferences.aspx</link>
      <pubDate>Wed, 10 Sep 2008 21:51:09 GMT</pubDate>
      <description>That was embarrassing. I went to demo the "Copy References" feature in Visual Studio 2008, and I couldn't remember how to do it.&lt;br&gt;
&lt;br&gt;
That's because it's not in the standard install of Visual Studio, but is part of the &lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31"&gt;PowerCommands
for Visual Studio 2008&lt;/a&gt; package.&lt;br&gt;
&lt;br&gt;
Check out the feature list that I've copied below. Some really useful stuff, you should &lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionID=df3f0c30-3d37-4e06-9ef8-3bff3508be31"&gt;download
now&lt;/a&gt; and install it!&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Enable/Disable PowerCommands in Options dialog&lt;br&gt;
&lt;/strong&gt;This feature allows you to select which commands to enable in the Visual
Studio IDE.&amp;nbsp; Point to the Tools menu, then click Options.&amp;nbsp; Expand the PowerCommands
options, then click Commands.&amp;nbsp; Check the commands you would like to enable.&lt;br&gt;
Note: All power commands are initially defaulted Enabled.&lt;br&gt;
&lt;br&gt;
&lt;div class="wikidoc"&gt;&lt;strong&gt;Format document on save / Remove and Sort Usings on save&lt;/strong&gt;
&lt;br&gt;
The Format document on save option formats the tabs, spaces, and so on of the document
being saved.&amp;nbsp;&amp;nbsp; It is equivalent to pointing to the Edit menu, clicking Advanced,
and then clicking Format Document. The Remove and sort usings option removes unused
using statements and sorts the remaining using statements in the document being saved.&lt;br&gt;
Note: The Remove and sort usings option is only available for C# documents.&lt;br&gt;
Note:&amp;nbsp; Format document on save and Remove and sort usings both are initially
defaulted OFF.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div class="wikidoc"&gt;&lt;strong&gt;Clear All Panes&lt;/strong&gt;
&lt;br&gt;
This command clears all output panes. It can be executed from the button on the toolbar
of the Output window.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div class="wikidoc"&gt;&lt;strong&gt;Copy Path&lt;/strong&gt;
&lt;br&gt;
This command copies the full path of the currently selected item to the clipboard.
It can be executed by right-clicking one of these nodes in the Solution Explorer:&lt;br&gt;
The solution node; A project node; Any project item node; Any folder. 
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div class="wikidoc"&gt;&lt;strong&gt;Email CodeSnippet&lt;/strong&gt;
&lt;br&gt;
To email the lines of text you select in the code editor, right-click anywhere in
the editor and then click Email CodeSnippet. 
&lt;/div&gt;
&lt;div class="wikidoc"&gt;Insert Guid Attribute&lt;br&gt;
This command adds a Guid attribute to a selected class.&amp;nbsp; From the code editor,
right-click anywhere within the class definition, then click Insert Guid Attribute.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div class="wikidoc"&gt;&lt;strong&gt;Show All Files&lt;/strong&gt;
&lt;br&gt;
This command shows the hidden files in all projects displayed in the Solution Explorer
when the solution node is selected.&amp;nbsp; It enhances the Show All Files button, which
normally shows only the hidden files in the selected project&amp;nbsp; node.&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div class="wikidoc"&gt;&lt;strong&gt;Undo Close&lt;/strong&gt;
&lt;br&gt;
This command reopens a closed document , returning the cursor to its last position.&amp;nbsp;
To reopen the most recently closed document, point to the Edit menu, then click Undo
Close.&amp;nbsp; Alternately, you can use the Ctrl+Shift+Z shortcut.&lt;br&gt;
To reopen any other recently closed document, point to the View menu, click Other
Windows, and then click Undo Close Window.&amp;nbsp; The Undo Close window appears, typically
next to the Output window. Double-click any document in the list to reopen it.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Collapse Projects&lt;/b&gt;
&lt;br&gt;
This command collapses a hierarchy in the solution explorer starting from the root
selected node. It can be executed from three different places: solution, solution
folders and project nodes respectively.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Copy Class&lt;/b&gt;
&lt;br&gt;
This command copies a selected class entire content to the clipboard. It can be executed
from a single project item or a project item with dependent sub items.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Paste Class&lt;/b&gt;
&lt;br&gt;
This command pastes a class entire content from the clipboard. It can be executed
from a project or folder node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Copy References&lt;/b&gt;
&lt;br&gt;
This command copies a reference or set of references to the clipboard. It can be executed
from the references node, a single reference node or set of reference nodes.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Paste References&lt;/b&gt;
&lt;br&gt;
This command pastes a reference or set of references from the clipboard. It can be
executed from different places depending on the type of project. For CSharp projects
it can be executed from the references node. For Visual Basic and Website projects
it can be executed from the project node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Copy As Project Reference&lt;/b&gt;
&lt;br&gt;
This command copies a project as a project reference to the clipboard. It can be executed
from a project node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Edit Project File&lt;/b&gt;
&lt;br&gt;
This command opens the MSBuild project file for a selected project inside Visual Studio.
It can be executed from a project node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Open Containing Folder&lt;/b&gt;
&lt;br&gt;
This command opens a Windows Explorer window pointing to the physical path of a selected
item. It can be executed from a project item node&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Open Command Prompt&lt;/b&gt;
&lt;br&gt;
This command opens a Visual Studio command prompt pointing to the physical path of
a selected item. It can be executed from four different places: solution, project,
folder and project item nodes respectively.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Unload Projects&lt;/b&gt;
&lt;br&gt;
This command unloads all projects in a solution. It can be executed from the solution
node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Reload Projects&lt;/b&gt;
&lt;br&gt;
This command reloads all unloaded projects in a solution. It can be executed from
the solution node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Remove and Sort Usings&lt;/b&gt;
&lt;br&gt;
This command removes and sort using statements for all classes given a project. It
can be executed from a solution node or a single project node.&lt;br&gt;
Note: The Remove and Sort Usings feature is only available for C# projects since the
C# editor implements this feature as a command in the C# editor (which this command
calls for each .cs file in the project).&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Extract Constant&lt;/b&gt;
&lt;br&gt;
This command creates a constant definition statement for a selected text. It can be
executed from the code window over a selected text.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Clear Recent File List&lt;/b&gt;
&lt;br&gt;
This command clears the Visual Studio recent file list.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Clear Recent Project List&lt;/b&gt;
&lt;br&gt;
This command clears the Visual Studio recent project list.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Transform Templates&lt;/b&gt;
&lt;br&gt;
This command executes the associated custom tool with text templates items. It can
be executed from a DSL project node or a folder node.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Close All&lt;/b&gt;
&lt;br&gt;
This command closes all documents. It can be executed from a document tab.
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=10958ac1-19f7-4cc7-b1ca-c0b04d675161" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,10958ac1-19f7-4cc7-b1ca-c0b04d675161.aspx</comments>
      <category>.NET;UserGroup;VS2008Tips</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=3c5c6f72-bde5-4c0e-b87d-84e69f230377</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,3c5c6f72-bde5-4c0e-b87d-84e69f230377.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,3c5c6f72-bde5-4c0e-b87d-84e69f230377.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3c5c6f72-bde5-4c0e-b87d-84e69f230377</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Just read that <a href="http://blog.lutzroeder.com/2008/08/future-of-net-reflector.html">Red
Gate are taking over development of Reflector from Lutz Roeder</a>.<br /><br />
Reflector is <strike>one of</strike> the best .NET development tools, and it is awesome
that Lutz has provided it free for so long. I have learnt a lot from playing around
inside that UI, and it has helped me out of many a pickle.<br /><br />
Red Gate have a pretty good track record of producing great software (<a href="http://www.red-gate.com/products/SQL_Compare/index.htm">SQL
Compare</a> is awesome!), and it is cool that they are giving back to the community
by developing and enhancing Reflector going forward. I'm looking forward to seeing
what they do with it!<br /><br />
Kirk.<br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3c5c6f72-bde5-4c0e-b87d-84e69f230377" /></body>
      <title>Reflector now a Red Gate product</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,3c5c6f72-bde5-4c0e-b87d-84e69f230377.aspx</guid>
      <link>http://pageofwords.com/blog/2008/08/21/ReflectorNowARedGateProduct.aspx</link>
      <pubDate>Thu, 21 Aug 2008 12:55:31 GMT</pubDate>
      <description>Just read that &lt;a href="http://blog.lutzroeder.com/2008/08/future-of-net-reflector.html"&gt;Red
Gate are taking over development of Reflector from Lutz Roeder&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Reflector is &lt;strike&gt;one of&lt;/strike&gt; the best .NET development tools, and it is awesome
that Lutz has provided it free for so long. I have learnt a lot from playing around
inside that UI, and it has helped me out of many a pickle.&lt;br&gt;
&lt;br&gt;
Red Gate have a pretty good track record of producing great software (&lt;a href="http://www.red-gate.com/products/SQL_Compare/index.htm"&gt;SQL
Compare&lt;/a&gt; is awesome!), and it is cool that they are giving back to the community
by developing and enhancing Reflector going forward. I'm looking forward to seeing
what they do with it!&lt;br&gt;
&lt;br&gt;
Kirk.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3c5c6f72-bde5-4c0e-b87d-84e69f230377" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,3c5c6f72-bde5-4c0e-b87d-84e69f230377.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=af21456c-3a7c-45d3-a9b3-f57677a8487b</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,af21456c-3a7c-45d3-a9b3-f57677a8487b.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,af21456c-3a7c-45d3-a9b3-f57677a8487b.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=af21456c-3a7c-45d3-a9b3-f57677a8487b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Many years ago in late 2002, I spent <i>quite </i>a
few hours playing around with Rotor, the <a href="http://research.microsoft.com/sscli/">Shared
Source CLI implementation</a>.<br /><br />
Back then Rotor was the easiest way to get a peek at how the .NET runtime and supporting
libraries <i>might have been</i> implemented. Not everything was there, and that which
was there wasn't guaranteed to function in exactly the same was as the shipping CLR,
but it let you look at the C# and C++ source code that made things happen.<br /><br />
I played around with the Gyro patch half-heartedly, but by the time the v2 release
of SSCLI came out, my thirst was adequately quenched by <a href="http://www.aisto.com/roeder/dotnet/">Reflector</a> so
I never really got into the genericised version.<br /><br />
I didn't read Stutz, Neward and Shilling's <a href="http://www.amazon.com/Shared-Source-Essentials-David-Stutz/dp/059600351X/ref=pd_bbs_1?ie=UTF8&amp;s=books&amp;qid=1219282394&amp;sr=8-1">Shared
Source CLI Essentials</a> book (sorry guys!) but it did sit on my wishlist for a while.<br /><br />
Now <a href="http://blogs.tedneward.com/">Ted Neward</a> and <a href="http://callvirt.net/blog/">Joel
Pobar</a> are <a href="http://blogs.tedneward.com/2008/08/20/Rotor+V2+Book+Draft+Available.aspx">self-publishing
the sequel to the book</a>, and will be giving away the electronic version of it through
the Microsoft site. 
<br /><br />
I have had a brief skim through the <a href="http://callvirt.net/blog/entry.aspx?entryid=b9a94d0c-761a-4d6b-bc2f-d6a5f8c1a4a7">draft</a>,
and it's a CLR geeks heaven. I'm looking forward to curling up with it some time in
the near future.<br /><br />
Check it out: <a href="http://callvirt.net/blog/entry.aspx?entryid=b9a94d0c-761a-4d6b-bc2f-d6a5f8c1a4a7">Shared
Source CLI 2.0</a><br /><br />
I believe Joel is at <a href="http://www.microsoft.com.au/teched/default.aspx">TechEd
Australia</a> next month - make sure to go along to his F# talk if you're there.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=af21456c-3a7c-45d3-a9b3-f57677a8487b" /></body>
      <title>New Rotor book</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,af21456c-3a7c-45d3-a9b3-f57677a8487b.aspx</guid>
      <link>http://pageofwords.com/blog/2008/08/21/NewRotorBook.aspx</link>
      <pubDate>Thu, 21 Aug 2008 03:00:47 GMT</pubDate>
      <description>Many years ago in late 2002, I spent &lt;i&gt;quite &lt;/i&gt;a few hours playing around with
Rotor, the &lt;a href="http://research.microsoft.com/sscli/"&gt;Shared Source CLI implementation&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Back then Rotor was the easiest way to get a peek at how the .NET runtime and supporting
libraries &lt;i&gt;might have been&lt;/i&gt; implemented. Not everything was there, and that which
was there wasn't guaranteed to function in exactly the same was as the shipping CLR,
but it let you look at the C# and C++ source code that made things happen.&lt;br&gt;
&lt;br&gt;
I played around with the Gyro patch half-heartedly, but by the time the v2 release
of SSCLI came out, my thirst was adequately quenched by &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt; so
I never really got into the genericised version.&lt;br&gt;
&lt;br&gt;
I didn't read Stutz, Neward and Shilling's &lt;a href="http://www.amazon.com/Shared-Source-Essentials-David-Stutz/dp/059600351X/ref=pd_bbs_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1219282394&amp;amp;sr=8-1"&gt;Shared
Source CLI Essentials&lt;/a&gt; book (sorry guys!) but it did sit on my wishlist for a while.&lt;br&gt;
&lt;br&gt;
Now &lt;a href="http://blogs.tedneward.com/"&gt;Ted Neward&lt;/a&gt; and &lt;a href="http://callvirt.net/blog/"&gt;Joel
Pobar&lt;/a&gt; are &lt;a href="http://blogs.tedneward.com/2008/08/20/Rotor+V2+Book+Draft+Available.aspx"&gt;self-publishing
the sequel to the book&lt;/a&gt;, and will be giving away the electronic version of it through
the Microsoft site. 
&lt;br&gt;
&lt;br&gt;
I have had a brief skim through the &lt;a href="http://callvirt.net/blog/entry.aspx?entryid=b9a94d0c-761a-4d6b-bc2f-d6a5f8c1a4a7"&gt;draft&lt;/a&gt;,
and it's a CLR geeks heaven. I'm looking forward to curling up with it some time in
the near future.&lt;br&gt;
&lt;br&gt;
Check it out: &lt;a href="http://callvirt.net/blog/entry.aspx?entryid=b9a94d0c-761a-4d6b-bc2f-d6a5f8c1a4a7"&gt;Shared
Source CLI 2.0&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I believe Joel is at &lt;a href="http://www.microsoft.com.au/teched/default.aspx"&gt;TechEd
Australia&lt;/a&gt; next month - make sure to go along to his F# talk if you're there.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=af21456c-3a7c-45d3-a9b3-f57677a8487b" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,af21456c-3a7c-45d3-a9b3-f57677a8487b.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=2f1a2b3c-f4d8-4b42-9022-060415c44fa7</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,2f1a2b3c-f4d8-4b42-9022-060415c44fa7.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,2f1a2b3c-f4d8-4b42-9022-060415c44fa7.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2f1a2b3c-f4d8-4b42-9022-060415c44fa7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Hi,<br /><br />
I got myself into helping out with another Code Camp.<br /><br />
This year we're having a <a href="http://www.codecamp.net.nz">Developer Code Camp</a> again
the day before TechEd in Auckland, from 9am till 6pm on 31 August 2008.<br /><br /><a href="http://www.codecamp.net.nz">View the site</a>, sign up and come along. It
would be great to see you there!<br /><br />
I'll probably write up the titles, sessions and speakers later on when things firm
up a bit more.<br /><br />
Kirk<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=2f1a2b3c-f4d8-4b42-9022-060415c44fa7" /></body>
      <title>Dev Code Camp 2008 - Auckland, 31 Aug 2008</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,2f1a2b3c-f4d8-4b42-9022-060415c44fa7.aspx</guid>
      <link>http://pageofwords.com/blog/2008/08/05/DevCodeCamp2008Auckland31Aug2008.aspx</link>
      <pubDate>Tue, 05 Aug 2008 07:04:55 GMT</pubDate>
      <description>Hi,&lt;br&gt;
&lt;br&gt;
I got myself into helping out with another Code Camp.&lt;br&gt;
&lt;br&gt;
This year we're having a &lt;a href="http://www.codecamp.net.nz"&gt;Developer Code Camp&lt;/a&gt; again
the day before TechEd in Auckland, from 9am till 6pm on 31 August 2008.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.codecamp.net.nz"&gt;View the site&lt;/a&gt;, sign up and come along. It
would be great to see you there!&lt;br&gt;
&lt;br&gt;
I'll probably write up the titles, sessions and speakers later on when things firm
up a bit more.&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=2f1a2b3c-f4d8-4b42-9022-060415c44fa7" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,2f1a2b3c-f4d8-4b42-9022-060415c44fa7.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=7f6a2d07-f344-4800-99ad-2b04c5fdad87</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,7f6a2d07-f344-4800-99ad-2b04c5fdad87.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,7f6a2d07-f344-4800-99ad-2b04c5fdad87.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7f6a2d07-f344-4800-99ad-2b04c5fdad87</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://blog.excastle.com/">Joe
White</a> has done a great job posting <a href="http://blog.excastle.com/tag/teched2008/">session
notes from TechEd US</a>.<br /><br />
One post that I found interesting was his <a href="http://blog.excastle.com/2008/06/12/teched-2008-notes-how-not-to-write-a-unit-test/">notes</a> from <a href="http://iserializable.com/">Roy
Osherove's</a> talk "How <em>not</em> to write a unit test".<br /><br />
There was quite a few suggestions in here that resonated with me, such as removing
'new' calls from within your tests into helper methods that create or initialise objects,
and some of his thoughts on stubs vs mocks.<br /><br />
An interesting read, easy to skim through. Thanks Joe, and thanks Roy!<br /><br />
(Wish I was there!)<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=7f6a2d07-f344-4800-99ad-2b04c5fdad87" /></body>
      <title>How not to write a unit test</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,7f6a2d07-f344-4800-99ad-2b04c5fdad87.aspx</guid>
      <link>http://pageofwords.com/blog/2008/06/16/HowNotToWriteAUnitTest.aspx</link>
      <pubDate>Mon, 16 Jun 2008 11:12:43 GMT</pubDate>
      <description>&lt;a href="http://blog.excastle.com/"&gt;Joe White&lt;/a&gt; has done a great job posting &lt;a href="http://blog.excastle.com/tag/teched2008/"&gt;session
notes from TechEd US&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
One post that I found interesting was his &lt;a href="http://blog.excastle.com/2008/06/12/teched-2008-notes-how-not-to-write-a-unit-test/"&gt;notes&lt;/a&gt; from &lt;a href="http://iserializable.com/"&gt;Roy
Osherove's&lt;/a&gt; talk "How &lt;em&gt;not&lt;/em&gt; to write a unit test".&lt;br&gt;
&lt;br&gt;
There was quite a few suggestions in here that resonated with me, such as removing
'new' calls from within your tests into helper methods that create or initialise objects,
and some of his thoughts on stubs vs mocks.&lt;br&gt;
&lt;br&gt;
An interesting read, easy to skim through. Thanks Joe, and thanks Roy!&lt;br&gt;
&lt;br&gt;
(Wish I was there!)&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=7f6a2d07-f344-4800-99ad-2b04c5fdad87" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,7f6a2d07-f344-4800-99ad-2b04c5fdad87.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=3d72d32c-3c9a-4d0e-a07e-02e3499552ac</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,3d72d32c-3c9a-4d0e-a07e-02e3499552ac.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,3d72d32c-3c9a-4d0e-a07e-02e3499552ac.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3d72d32c-3c9a-4d0e-a07e-02e3499552ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Good news that <a href="http://blogs.msdn.com/darrylburling/archive/2008/05/01/tech-ed-registration-and-speakers.aspx">Scott
Hanselman is coming to TechEd NZ</a> which runs from Sept 1-3 in Auckland.<br /><br />
Hopefully this year I'll get to present again. The past two years I have had fun presenting
PowerShell sessions, and there's lots of news of new PowerShell providers (and more
coming), so there should be something good to report.<br /><br />
This year TechEd is tantalisingly close to <a href="http://msdn.microsoft.com/en-us/events/bb288534.aspx">PDC</a> -
which is Oct 27-30 in Los Angeles. I say 'tantalisingly', because a lot of teams within
Microsoft will be holding off releasing new versions of their technology, or making
big announcements at PDC (e.g. the mysterious Purdy team language / editor stuff <a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2178">will
be divulged then</a>).<br /><br />
Thank goodness for open projects like ASP.NET MVC - we're seeing right into the bowels
of the project on a regular basis thanks to their open and frequent releases.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3d72d32c-3c9a-4d0e-a07e-02e3499552ac" /></body>
      <title>NZ TechEd 2008</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,3d72d32c-3c9a-4d0e-a07e-02e3499552ac.aspx</guid>
      <link>http://pageofwords.com/blog/2008/05/02/NZTechEd2008.aspx</link>
      <pubDate>Fri, 02 May 2008 04:49:37 GMT</pubDate>
      <description>Good news that &lt;a href="http://blogs.msdn.com/darrylburling/archive/2008/05/01/tech-ed-registration-and-speakers.aspx"&gt;Scott
Hanselman is coming to TechEd NZ&lt;/a&gt; which runs from Sept 1-3 in Auckland.&lt;br&gt;
&lt;br&gt;
Hopefully this year I'll get to present again. The past two years I have had fun presenting
PowerShell sessions, and there's lots of news of new PowerShell providers (and more
coming), so there should be something good to report.&lt;br&gt;
&lt;br&gt;
This year TechEd is tantalisingly close to &lt;a href="http://msdn.microsoft.com/en-us/events/bb288534.aspx"&gt;PDC&lt;/a&gt; -
which is Oct 27-30 in Los Angeles. I say 'tantalisingly', because a lot of teams within
Microsoft will be holding off releasing new versions of their technology, or making
big announcements at PDC (e.g. the mysterious Purdy team language / editor stuff &lt;a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2178"&gt;will
be divulged then&lt;/a&gt;).&lt;br&gt;
&lt;br&gt;
Thank goodness for open projects like ASP.NET MVC - we're seeing right into the bowels
of the project on a regular basis thanks to their open and frequent releases.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3d72d32c-3c9a-4d0e-a07e-02e3499552ac" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,3d72d32c-3c9a-4d0e-a07e-02e3499552ac.aspx</comments>
      <category>.NET;TechEd</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Simon Green posted a good comment on a
previous post of mine (<a href="http://pageofwords.com/blog/2007/11/08/ILikeGuids.aspx">I
like Guids</a>), which is a generic class that wraps Guids, so that you get a nice
compile time error if the wrong guid is used in the wrong place.<br /><br />
e.g.<br /><br />
/* Doesn't compile 
<br />
Library.BorrowBook(bookId, personId); 
<br />
*/ 
<br /><br />
// Compiles fine<br />
Library.BorrowBook(personId, bookId);<br /><br />
Whereas with a normal signature of (Guid, Guid) you'd get no compile-time error if
the parameters were mixed up.<br /><br />
Try <a href="http://pageofwords.com/blog/2007/11/08/ILikeGuids.aspx#293cae80-a17a-4432-86e9-af3a0de9f635">his
solution</a> out, and let me know what you think.<br /><br />
Cheers,<br /><br />
Kirk<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069" /></body>
      <title>I (still) like Guids</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069.aspx</guid>
      <link>http://pageofwords.com/blog/2008/04/29/IStillLikeGuids.aspx</link>
      <pubDate>Tue, 29 Apr 2008 12:34:52 GMT</pubDate>
      <description>Simon Green posted a good comment on a previous post of mine (&lt;a href="http://pageofwords.com/blog/2007/11/08/ILikeGuids.aspx"&gt;I
like Guids&lt;/a&gt;), which is a generic class that wraps Guids, so that you get a nice
compile time error if the wrong guid is used in the wrong place.&lt;br&gt;
&lt;br&gt;
e.g.&lt;br&gt;
&lt;br&gt;
/* Doesn't compile 
&lt;br&gt;
Library.BorrowBook(bookId, personId); 
&lt;br&gt;
*/ 
&lt;br&gt;
&lt;br&gt;
// Compiles fine&lt;br&gt;
Library.BorrowBook(personId, bookId);&lt;br&gt;
&lt;br&gt;
Whereas with a normal signature of (Guid, Guid) you'd get no compile-time error if
the parameters were mixed up.&lt;br&gt;
&lt;br&gt;
Try &lt;a href="http://pageofwords.com/blog/2007/11/08/ILikeGuids.aspx#293cae80-a17a-4432-86e9-af3a0de9f635"&gt;his
solution&lt;/a&gt; out, and let me know what you think.&lt;br&gt;
&lt;br&gt;
Cheers,&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,ca4ed1e0-ae0c-48ed-8e55-6a18e3c88069.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=32718c03-371f-4aaf-b467-c34acc16a898</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,32718c03-371f-4aaf-b467-c34acc16a898.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,32718c03-371f-4aaf-b467-c34acc16a898.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=32718c03-371f-4aaf-b467-c34acc16a898</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">On <a href="http://blogs.msdn.com/kcwalina/">Krzysztof
Cwalina's</a> blog there's an example of what may be coming in the Managed Extensibility
Framework, a framework for dependency injection, naming and activation, and duck typing.
Looks like it could be interesting when released.<br /><br />
While on his blog, I got to reading some of the older posts:<br /><ul><li>
The <a href="http://blogs.msdn.com/kcwalina/archive/2008/01/03/FrameworkDesignGuidelines2ndEdition.aspx">second
edition of Framework Design Guidelines</a> is in the works, and may be out by the
end of the year.</li><li>
The <a href="http://blogs.msdn.com/kcwalina/archive/2008/04/09/FDGDigest.aspx">Framework
Design Guidelines <i>Digest</i> v2</a> is available for download in PDF format.</li><li><a href="http://blogs.msdn.com/kcwalina/archive/2007/01/30/ExceptionHierarchies.aspx">How
to Design Exception Hierarchies</a> gives good advice on when to create new exception
types, and when to reuse existing types.</li></ul>
There's good stuff buried in the archives of Krzysztof and <a href="http://blogs.msdn.com/brada/default.aspx">Brad
Abrams</a> blogs.<br /><br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=32718c03-371f-4aaf-b467-c34acc16a898" /></body>
      <title>Managed Extensibility Framework &amp; Framework Design Guidelines</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,32718c03-371f-4aaf-b467-c34acc16a898.aspx</guid>
      <link>http://pageofwords.com/blog/2008/04/29/ManagedExtensibilityFrameworkFrameworkDesignGuidelines.aspx</link>
      <pubDate>Tue, 29 Apr 2008 12:28:15 GMT</pubDate>
      <description>On &lt;a href="http://blogs.msdn.com/kcwalina/"&gt;Krzysztof Cwalina's&lt;/a&gt; blog there's
an example of what may be coming in the Managed Extensibility Framework, a framework
for dependency injection, naming and activation, and duck typing. Looks like it could
be interesting when released.&lt;br&gt;
&lt;br&gt;
While on his blog, I got to reading some of the older posts:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
The &lt;a href="http://blogs.msdn.com/kcwalina/archive/2008/01/03/FrameworkDesignGuidelines2ndEdition.aspx"&gt;second
edition of Framework Design Guidelines&lt;/a&gt; is in the works, and may be out by the
end of the year.&lt;/li&gt;
&lt;li&gt;
The &lt;a href="http://blogs.msdn.com/kcwalina/archive/2008/04/09/FDGDigest.aspx"&gt;Framework
Design Guidelines &lt;i&gt;Digest&lt;/i&gt; v2&lt;/a&gt; is available for download in PDF format.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogs.msdn.com/kcwalina/archive/2007/01/30/ExceptionHierarchies.aspx"&gt;How
to Design Exception Hierarchies&lt;/a&gt; gives good advice on when to create new exception
types, and when to reuse existing types.&lt;/li&gt;
&lt;/ul&gt;
There's good stuff buried in the archives of Krzysztof and &lt;a href="http://blogs.msdn.com/brada/default.aspx"&gt;Brad
Abrams&lt;/a&gt; blogs.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=32718c03-371f-4aaf-b467-c34acc16a898" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,32718c03-371f-4aaf-b467-c34acc16a898.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=3eff8290-ebd0-4e10-94e1-9d18257b924b</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,3eff8290-ebd0-4e10-94e1-9d18257b924b.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,3eff8290-ebd0-4e10-94e1-9d18257b924b.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3eff8290-ebd0-4e10-94e1-9d18257b924b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm presenting at the <a href="http://www.dot.net.nz/wellington">Wellington
.NET Users Group</a> this Wednesday night.<br /><br />
The aim is to have a bit of a run-through some of the interesting bits I pulled out
of the <a href="http://langnetsymposium.com/">Lang.NET Symposium</a> videos, run through
how the different CLR languages fit together and into the CLR, and talk about some
of the things we have been hinted at for the future.<br /><br />
More details on the <a href="http://www.dot.net.nz/wellingon">Wellington .NET Users
Group site</a>.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3eff8290-ebd0-4e10-94e1-9d18257b924b" /></body>
      <title>Wellington .NET: There's more to life than C# and VB.NET this Wednesday</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,3eff8290-ebd0-4e10-94e1-9d18257b924b.aspx</guid>
      <link>http://pageofwords.com/blog/2008/04/14/WellingtonNETTheresMoreToLifeThanCAndVBNETThisWednesday.aspx</link>
      <pubDate>Mon, 14 Apr 2008 10:46:04 GMT</pubDate>
      <description>I'm presenting at the &lt;a href="http://www.dot.net.nz/wellington"&gt;Wellington .NET Users
Group&lt;/a&gt; this Wednesday night.&lt;br&gt;
&lt;br&gt;
The aim is to have a bit of a run-through some of the interesting bits I pulled out
of the &lt;a href="http://langnetsymposium.com/"&gt;Lang.NET Symposium&lt;/a&gt; videos, run through
how the different CLR languages fit together and into the CLR, and talk about some
of the things we have been hinted at for the future.&lt;br&gt;
&lt;br&gt;
More details on the &lt;a href="http://www.dot.net.nz/wellingon"&gt;Wellington .NET Users
Group site&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3eff8290-ebd0-4e10-94e1-9d18257b924b" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,3eff8290-ebd0-4e10-94e1-9d18257b924b.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=b2ab863c-8bf8-4e9e-ab87-f422b10a2a30</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,b2ab863c-8bf8-4e9e-ab87-f422b10a2a30.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,b2ab863c-8bf8-4e9e-ab87-f422b10a2a30.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b2ab863c-8bf8-4e9e-ab87-f422b10a2a30</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been reading <a href="http://blogs.msdn.com/charlie/">Charlie Calvert's blog</a>,
and his list of <a href="http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx">LINQ
providers</a>, and watching both the <a href="http://www.mindscape.co.nz/blog/index.php/2008/03/17/wanted-linq-to-lightspeed-beta-testers/">Lightspeed</a> and <a href="http://www.llblgen.com/pages/news.aspx">LLBLGen
Pro</a> LINQ beta's with interest.
</p>
        <p>
There's an available product that you can buy - the CHI69 "Computer Human Interface"
- I have written a LINQ provider over the API provided within the supplied SDK.
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/PageofWords.LINQToSpouse.zip">Download
the beta LINQ to Spouse provider here.</a>
        </p>
        <p>
Connect to the CHI69 device, and read in the environment:
</p>
        <blockquote style="BACKGROUND-COLOR: #eee">
          <font color="#008000" size="2">
            <p>
// Open environmental interface<br /></p>
          </font>
          <font color="#2b91af" size="2">Environment</font>
          <font color="#000000" size="2"> environment
= </font>
          <font color="#2b91af" size="2">CHIConnector</font>
          <font color="#000000" size="2">.Connect&lt;</font>
          <font color="#2b91af" size="2">Environment</font>
          <font size="2">
            <font color="#000000">&gt;();</font>
          </font>
        </blockquote>
        <p>
Build the representation of the user:
</p>
        <blockquote style="BACKGROUND-COLOR: #eee">
          <font color="#008000" size="2">
            <p>
// Open self-representation<br /></p>
          </font>
          <font color="#2b91af" size="2">Husband</font>
          <font color="#000000" size="2"> me
= </font>
          <font color="#2b91af" size="2">CHIConnector</font>
          <font color="#000000" size="2">.Self&lt;</font>
          <font color="#2b91af" size="2">Husband</font>
          <font size="2">
            <font color="#000000">&gt;();</font>
          </font>
        </blockquote>
        <p>
The device allows querying the local environment for objects of different
types using LINQ: 
</p>
        <blockquote style="BACKGROUND-COLOR: #eee">
          <font color="#008000" size="2">
            <p>
// Search all available for a girlfriend<br /></p>
          </font>
          <font color="#0000ff" size="2">var</font>
          <font color="#000000" size="2"> prospects
= </font>
          <font color="#2b91af" size="2">CHIConnector</font>
          <font color="#000000" size="2">.AllAvailable&lt;</font>
          <font color="#2b91af" size="2">Girlfriend</font>
          <font size="2">
            <font color="#000000">&gt;();</font>
          </font>
          <font color="#2b91af" size="2">
            <p dir="ltr" style="MARGIN-RIGHT: 0px">
Girlfriend
</p>
          </font>
          <font size="2">
            <font color="#000000"> girlfriend = </font>
          </font>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p dir="ltr" style="MARGIN-RIGHT: 0px">
              <font size="2">(<br /></font>
              <font color="#0000ff" size="2">from</font>
              <font size="2"> prospect </font>
              <font color="#0000ff" size="2">in</font>
              <font size="2"> prospects<br /></font>
              <font color="#0000ff" size="2">where</font>
              <font size="2">
                <br />
(prospect.Husband == </font>
              <font color="#0000ff" size="2">null</font>
              <font size="2"> ||
prospect.MaritalStatus == </font>
              <font color="#2b91af" size="2">MaritalStatus</font>
              <font size="2">.Rocky)<br />
&amp;&amp;<br />
prospect.IsCompatibleWith(me)<br /></font>
              <font color="#0000ff" size="2">select</font>
              <font size="2"> prospect<br />
).First();</font>
            </p>
          </blockquote>
        </blockquote>
        <p>
Peform some realistic actions with returned objects:
</p>
        <blockquote style="BACKGROUND-COLOR: #eee">
          <font color="#2b91af" size="2">
            <p>
Thread
</p>
          </font>
          <font size="2">
            <font color="#000000">.Sleep(69);</font>
          </font>
        </blockquote>
        <p>
The library exposes a rich interface:
</p>
        <blockquote style="BACKGROUND-COLOR: #eee">
          <font color="#008000" size="2">
            <p>
// Test marriage criteria
</p>
          </font>
          <font color="#0000ff" size="2">
            <p>
if
</p>
          </font>
          <font color="#000000" size="2"> (me.Mood == </font>
          <font color="#2b91af" size="2">Mood</font>
          <font size="2">
            <font color="#000000">.Romantic
&amp;&amp;<br /></font>    environment.Lighting &lt;= </font>
          <font color="#2b91af" size="2">Lighting</font>
          <font size="2">.Flattering
&amp;&amp;<br />
    girlfriend.Emotions.Contains(</font>
          <font color="#2b91af" size="2">Emotion</font>
          <font size="2">.Desperate))<br />
{</font>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <font color="#008000" size="2">// Note the downcast. Some functionality will become
unavailable<br /></font>
              <font size="2">me.Wife = (</font>
              <font color="#2b91af" size="2">Wife</font>
              <font size="2">)girlfriend;
</font>
            </p>
          </blockquote>
          <p>
}
</p>
        </blockquote>
        <p>
So go ahead and test the <a href="http://pageofwords.com/blog/content/binary/PageofWords.LINQToSpouse.zip">library
and provider</a>. I'm interested in any feedback you can give.
</p>
        <p>
Some notes:
</p>
        <ul>
          <li>
Wife inherits from Husband (by definition, the functionality is a superset) 
</li>
          <li>
Version 69 of the CHI device only allows for monogamous relationships. Due to demand,
apparently this requirement will be removed in an upcoming release 
</li>
          <li>
As an optimisation, some inherited properties are implemented or cached in the class
library, rather than querying the real-world object (e.g. wife.IsRight does not require
a remote call as the result is deterministic) 
</li>
          <li>
The default device communication protocol is messy. Using SOAP would clean it up. 
</li>
          <li>
Setting me.Salary = 0 will throw an OutOfLuck exception, terminating the program. 
</li>
          <li>
High intensity emotions (e.g. wife.Emotion.Intensity &gt;= Intensity.Danger) result
in unpredictible behaviour.</li>
        </ul>
        <a href="http://pageofwords.com/blog/content/binary/PageofWords.LINQToSpouse.zip">PageofWords.LINQToSpouse.zip
(14.36 KB)</a>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b2ab863c-8bf8-4e9e-ab87-f422b10a2a30" />
      </body>
      <title>LINQ to Spouse provider</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,b2ab863c-8bf8-4e9e-ab87-f422b10a2a30.aspx</guid>
      <link>http://pageofwords.com/blog/2008/03/31/LINQToSpouseProvider.aspx</link>
      <pubDate>Mon, 31 Mar 2008 12:39:33 GMT</pubDate>
      <description>&lt;p&gt;
I've been reading &lt;a href="http://blogs.msdn.com/charlie/"&gt;Charlie Calvert's blog&lt;/a&gt;,
and his list of &lt;a href="http://blogs.msdn.com/charlie/archive/2008/02/28/link-to-everything-a-list-of-linq-providers.aspx"&gt;LINQ
providers&lt;/a&gt;, and watching both the &lt;a href="http://www.mindscape.co.nz/blog/index.php/2008/03/17/wanted-linq-to-lightspeed-beta-testers/"&gt;Lightspeed&lt;/a&gt; and &lt;a href="http://www.llblgen.com/pages/news.aspx"&gt;LLBLGen
Pro&lt;/a&gt; LINQ beta's with interest.
&lt;/p&gt;
&lt;p&gt;
There's an available product that you can buy - the CHI69 "Computer Human Interface"
- I have written a LINQ provider over the API provided within the supplied SDK.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/PageofWords.LINQToSpouse.zip"&gt;Download
the beta LINQ to Spouse provider here.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Connect to the CHI69 device, and read in the environment:
&lt;/p&gt;
&lt;blockquote style="BACKGROUND-COLOR: #eee"&gt;&lt;font color=#008000 size=2&gt; 
&lt;p&gt;
// Open environmental interface&lt;br&gt;
&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Environment&lt;/font&gt;&lt;font color=#000000 size=2&gt; environment
= &lt;/font&gt;&lt;font color=#2b91af size=2&gt;CHIConnector&lt;/font&gt;&lt;font color=#000000 size=2&gt;.Connect&amp;lt;&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Environment&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&amp;gt;();&lt;/font&gt; &gt;
&lt;/blockquote&gt;&gt; 
&lt;p&gt;
Build the representation of the user:
&lt;/p&gt;
&lt;blockquote style="BACKGROUND-COLOR: #eee"&gt;&lt;font color=#008000 size=2&gt; 
&lt;p&gt;
// Open self-representation&lt;br&gt;
&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Husband&lt;/font&gt;&lt;font color=#000000 size=2&gt; me = &lt;/font&gt;&lt;font color=#2b91af size=2&gt;CHIConnector&lt;/font&gt;&lt;font color=#000000 size=2&gt;.Self&amp;lt;&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Husband&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&amp;gt;();&lt;/font&gt;&gt;
&lt;/font&gt;&lt;/blockquote&gt; 
&lt;p&gt;
The&amp;nbsp;device&amp;nbsp;allows querying the local environment for objects of different
types using LINQ:&amp;nbsp;
&lt;/p&gt;
&lt;blockquote style="BACKGROUND-COLOR: #eee"&gt;&lt;font color=#008000 size=2&gt; 
&lt;p&gt;
// Search all available for a girlfriend&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;var&lt;/font&gt;&lt;font color=#000000 size=2&gt; prospects
= &lt;/font&gt;&lt;font color=#2b91af size=2&gt;CHIConnector&lt;/font&gt;&lt;font color=#000000 size=2&gt;.AllAvailable&amp;lt;&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Girlfriend&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;&amp;gt;();&lt;/font&gt;&gt;
&lt;/font&gt;&lt;font color=#2b91af size=2&gt; 
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
Girlfriend
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt; girlfriend = &lt;/font&gt;&lt;/font&gt;&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;font size=2&gt;(&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;from&lt;/font&gt;&lt;font size=2&gt; prospect &lt;/font&gt;&lt;font color=#0000ff size=2&gt;in&lt;/font&gt;&lt;font size=2&gt; prospects&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;where&lt;/font&gt;&lt;font size=2&gt; 
&lt;br&gt;
(prospect.Husband == &lt;/font&gt;&lt;font color=#0000ff size=2&gt;null&lt;/font&gt;&lt;font size=2&gt; ||
prospect.MaritalStatus == &lt;/font&gt;&lt;font color=#2b91af size=2&gt;MaritalStatus&lt;/font&gt;&lt;font size=2&gt;.Rocky)&lt;br&gt;
&amp;amp;&amp;amp;&lt;br&gt;
prospect.IsCompatibleWith(me)&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt;select&lt;/font&gt;&lt;font size=2&gt; prospect&lt;br&gt;
).First();&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&gt;&lt;/blockquote&gt; 
&lt;p&gt;
Peform some realistic actions with returned objects:
&lt;/p&gt;
&lt;blockquote style="BACKGROUND-COLOR: #eee"&gt;&lt;font color=#2b91af size=2&gt; 
&lt;p&gt;
Thread
&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;.Sleep(69);&lt;/font&gt; &gt;
&lt;/font&gt;&lt;/blockquote&gt; 
&lt;p&gt;
The library exposes a rich interface:
&lt;/p&gt;
&lt;blockquote style="BACKGROUND-COLOR: #eee"&gt;&lt;font color=#008000 size=2&gt; 
&lt;p&gt;
// Test marriage criteria
&lt;/p&gt;
&lt;/font&gt;&lt;font color=#0000ff size=2&gt; 
&lt;p&gt;
if
&lt;/font&gt;&lt;font color=#000000 size=2&gt; (me.Mood == &lt;/font&gt;&lt;font color=#2b91af size=2&gt;Mood&lt;/font&gt;&lt;font size=2&gt;&lt;font color=#000000&gt;.Romantic
&amp;amp;&amp;amp;&lt;br&gt;
&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; environment.Lighting &amp;lt;= &lt;/font&gt;&lt;font color=#2b91af size=2&gt;Lighting&lt;/font&gt;&lt;font size=2&gt;.Flattering
&amp;amp;&amp;amp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; girlfriend.Emotions.Contains(&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Emotion&lt;/font&gt;&lt;font size=2&gt;.Desperate))&lt;br&gt;
{&lt;/font&gt;&gt;
&lt;blockquote dir=ltr style="MARGIN-RIGHT: 0px"&gt; 
&lt;p&gt;
&lt;font color=#008000 size=2&gt;// Note the downcast. Some functionality will become unavailable&lt;br&gt;
&lt;/font&gt;&lt;font size=2&gt;me.Wife = (&lt;/font&gt;&lt;font color=#2b91af size=2&gt;Wife&lt;/font&gt;&lt;font size=2&gt;)girlfriend;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
}
&lt;/p&gt;
&gt;&lt;/blockquote&gt; 
&lt;p&gt;
So go ahead and test the &lt;a href="http://pageofwords.com/blog/content/binary/PageofWords.LINQToSpouse.zip"&gt;library
and provider&lt;/a&gt;. I'm interested in any feedback you can give.
&lt;/p&gt;
&lt;p&gt;
Some notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Wife inherits from Husband (by definition, the functionality is a superset) 
&lt;li&gt;
Version 69 of the CHI device only allows for monogamous relationships. Due to demand,
apparently this requirement will be removed in an upcoming release 
&lt;li&gt;
As an optimisation, some inherited properties are implemented or cached in the class
library, rather than querying the real-world object (e.g. wife.IsRight does not require
a remote call as the result is deterministic) 
&lt;li&gt;
The default device communication protocol is messy. Using SOAP would clean it up. 
&lt;li&gt;
Setting me.Salary = 0 will throw an OutOfLuck exception, terminating the program. 
&lt;li&gt;
High intensity emotions (e.g. wife.Emotion.Intensity &amp;gt;= Intensity.Danger) result
in unpredictible behaviour.&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/PageofWords.LINQToSpouse.zip"&gt;PageofWords.LINQToSpouse.zip
(14.36 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b2ab863c-8bf8-4e9e-ab87-f422b10a2a30" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,b2ab863c-8bf8-4e9e-ab87-f422b10a2a30.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=0ba7ef79-0617-4de0-8469-7a725385fca5</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,0ba7ef79-0617-4de0-8469-7a725385fca5.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,0ba7ef79-0617-4de0-8469-7a725385fca5.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0ba7ef79-0617-4de0-8469-7a725385fca5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">It's good to see on <a href="http://www.iunknown.com/2008/02/want-to-work-on.html">John
Lam's blog</a> that videos from <a href="http://langnetsymposium.com/">Lang.NET</a> are
now <a href="http://langnetsymposium.com/talks.asp">available.</a><br /><br />
They are Silverlight hosted, but if you want to download them directly, here are the
links to the WMV files (right-click to save them to your disk):<br /><br /><p><a href="http://langnetsymposium.com/talks/Videos/1-00%20-%20Keynote%20-%20Jason%20Zander.wmv">Videos/1-00
- Keynote - Jason Zander</a></p><p><a href="http://langnetsymposium.com/talks/Videos/1-01%20-%20CSharp3%20-%20Anders%20Hejlsberg.wmv">Videos/1-01
- CSharp3 - Anders Hejlsberg</a></p><p><a href="http://langnetsymposium.com/talks/Videos/1-05%20-%20Lively%20Kernel%20-%20Dan%20Ingalls%20-%20Sun.wmv">Videos/1-05
- Lively Kernel - Dan Ingalls - Sun</a></p><p><a href="http://langnetsymposium.com/talks/Videos/1-06%20-%20JScript%20-%20Pratap%20Lakshman.wmv">Videos/1-06
- JScript - Pratap Lakshman</a></p><p><a href="http://langnetsymposium.com/talks/Videos/1-07%20-%20Irony%20and%20ERP%20Language%20Challenges%20-%20Roman%20Ivantsov.wmv">Videos/1-07
- Irony and ERP Language Challenges - Roman Ivantsov</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-00%20-%20Democratizing%20the%20Cloud%20with%20Volta%20-%20Erik%20Meijer.wmv">Videos/2-00
- Democratizing the Cloud with Volta - Erik Meijer</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-01%20-%20Newspeak%20-%20Gilad%20Braha%20-%20Cadence.wmv">Videos/2-01
- Newspeak - Gilad Braha - Cadence</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-02%20-%20Resolver%20One%20-%20Giles%20Thomas%20-%20Resolver.wmv">Videos/2-02
- Resolver One - Giles Thomas - Resolver</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-03%20-%20Retargeting%20DLR%20-%20Seo%20Sanghyeon.wmv">Videos/2-03
- Retargeting DLR - Seo Sanghyeon</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-04%20-%20Visual%20Basic%20-%20Paul%20Vick.wmv">Videos/2-04
- Visual Basic - Paul Vick</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-06%20-%20PHP%20-%20Wez%20Furlong.wmv">Videos/2-06
- PHP - Wez Furlong</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-07%20-%20Phalanger%20-%20Tomas%20Petricek.wmv">Videos/2-07
- Phalanger - Tomas Petricek</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-08%20-%20Pex%20-%20Peli%20de%20Halleux.wmv">Videos/2-08
- Pex - Peli de Halleux</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-09%20-%20Numerical%20Computing%20with%20the%20CLR%20-%20Jeffrey%20Sax%20-%20Extreme%20Optimization.wmv">Videos/2-09
- Numerical Computing with the CLR - Jeffrey Sax - Extreme Optimization</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-10%20-%20remotion%20Mixins%20-%20Stefan%20Wenig%20and%20Fabian%20Schmied%20-%20rubicon.wmv">Videos/2-10
- remotion Mixins - Stefan Wenig and Fabian Schmied - rubicon</a></p><p><a href="http://langnetsymposium.com/talks/Videos/2-11%20-%20CodeIt%20-%20Serge%20Baranovsky%20-%20submain.wmv">Videos/2-11
- CodeIt - Serge Baranovsky - submain</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-00%20-%20IronRuby%20-%20John%20Lam.wmv">Videos/3-00
- IronRuby - John Lam</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-01%20-%20Ruby.NET%20-%20Wayne%20Kelly.wmv">Videos/3-01
- Ruby.NET - Wayne Kelly</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-02%20-%20FSharp%20-%20Luke%20Hoban.wmv">Videos/3-02
- FSharp - Luke Hoban</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-03%20-%20Parsing%20Expression%20Grammars%20in%20FSharp%20-%20Harry%20Pierson.wmv">Videos/3-03
- Parsing Expression Grammars in FSharp - Harry Pierson</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-04%20-%20NStatic%20-%20Wesner%20Moise%20-%20SoftPerson.wmv">Videos/3-04
- NStatic - Wesner Moise - SoftPerson</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-05%20-%20Moonlight%20and%20Mono%20-%20Miguel%20de%20Icaza.wmv">Videos/3-05
- Moonlight and Mono - Miguel de Icaza</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-06%20-%20Visual%20Studio%20Shell%20-%20Aaron%20Marten.wmv">Videos/3-06
- Visual Studio Shell - Aaron Marten</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-07%20-%20Modeling%20and%20Languages%20-%20Don%20Box.wmv">Videos/3-07
- Modeling and Languages - Don Box</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-07%20-%20Modeling%20and%20Languages%20-%20Don%20Box_1.wmv">Videos/3-07
- Modeling and Languages - Don Box_1</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-08%20-%20Cobra%20-%20Chuck%20Esterbrook.wmv">Videos/3-08
- Cobra - Chuck Esterbrook</a></p><p><a href="http://langnetsymposium.com/talks/Videos/3-09%20-%20Intentional%20-%20Magnus%20Christerson.wmv">Videos/3-09
- Intentional - Magnus Christerson</a></p><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0ba7ef79-0617-4de0-8469-7a725385fca5" /></body>
      <title>Lang.NET videos available</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,0ba7ef79-0617-4de0-8469-7a725385fca5.aspx</guid>
      <link>http://pageofwords.com/blog/2008/02/21/LangNETVideosAvailable.aspx</link>
      <pubDate>Thu, 21 Feb 2008 00:12:54 GMT</pubDate>
      <description>It's good to see on &lt;a href="http://www.iunknown.com/2008/02/want-to-work-on.html"&gt;John
Lam's blog&lt;/a&gt; that videos from &lt;a href="http://langnetsymposium.com/"&gt;Lang.NET&lt;/a&gt; are
now &lt;a href="http://langnetsymposium.com/talks.asp"&gt;available.&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
They are Silverlight hosted, but if you want to download them directly, here are the
links to the WMV files (right-click to save them to your disk):&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/1-00%20-%20Keynote%20-%20Jason%20Zander.wmv"&gt;Videos/1-00
- Keynote - Jason Zander&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/1-01%20-%20CSharp3%20-%20Anders%20Hejlsberg.wmv"&gt;Videos/1-01
- CSharp3 - Anders Hejlsberg&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/1-05%20-%20Lively%20Kernel%20-%20Dan%20Ingalls%20-%20Sun.wmv"&gt;Videos/1-05
- Lively Kernel - Dan Ingalls - Sun&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/1-06%20-%20JScript%20-%20Pratap%20Lakshman.wmv"&gt;Videos/1-06
- JScript - Pratap Lakshman&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/1-07%20-%20Irony%20and%20ERP%20Language%20Challenges%20-%20Roman%20Ivantsov.wmv"&gt;Videos/1-07
- Irony and ERP Language Challenges - Roman Ivantsov&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-00%20-%20Democratizing%20the%20Cloud%20with%20Volta%20-%20Erik%20Meijer.wmv"&gt;Videos/2-00
- Democratizing the Cloud with Volta - Erik Meijer&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-01%20-%20Newspeak%20-%20Gilad%20Braha%20-%20Cadence.wmv"&gt;Videos/2-01
- Newspeak - Gilad Braha - Cadence&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-02%20-%20Resolver%20One%20-%20Giles%20Thomas%20-%20Resolver.wmv"&gt;Videos/2-02
- Resolver One - Giles Thomas - Resolver&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-03%20-%20Retargeting%20DLR%20-%20Seo%20Sanghyeon.wmv"&gt;Videos/2-03
- Retargeting DLR - Seo Sanghyeon&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-04%20-%20Visual%20Basic%20-%20Paul%20Vick.wmv"&gt;Videos/2-04
- Visual Basic - Paul Vick&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-06%20-%20PHP%20-%20Wez%20Furlong.wmv"&gt;Videos/2-06
- PHP - Wez Furlong&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-07%20-%20Phalanger%20-%20Tomas%20Petricek.wmv"&gt;Videos/2-07
- Phalanger - Tomas Petricek&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-08%20-%20Pex%20-%20Peli%20de%20Halleux.wmv"&gt;Videos/2-08
- Pex - Peli de Halleux&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-09%20-%20Numerical%20Computing%20with%20the%20CLR%20-%20Jeffrey%20Sax%20-%20Extreme%20Optimization.wmv"&gt;Videos/2-09
- Numerical Computing with the CLR - Jeffrey Sax - Extreme Optimization&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-10%20-%20remotion%20Mixins%20-%20Stefan%20Wenig%20and%20Fabian%20Schmied%20-%20rubicon.wmv"&gt;Videos/2-10
- remotion Mixins - Stefan Wenig and Fabian Schmied - rubicon&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/2-11%20-%20CodeIt%20-%20Serge%20Baranovsky%20-%20submain.wmv"&gt;Videos/2-11
- CodeIt - Serge Baranovsky - submain&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-00%20-%20IronRuby%20-%20John%20Lam.wmv"&gt;Videos/3-00
- IronRuby - John Lam&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-01%20-%20Ruby.NET%20-%20Wayne%20Kelly.wmv"&gt;Videos/3-01
- Ruby.NET - Wayne Kelly&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-02%20-%20FSharp%20-%20Luke%20Hoban.wmv"&gt;Videos/3-02
- FSharp - Luke Hoban&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-03%20-%20Parsing%20Expression%20Grammars%20in%20FSharp%20-%20Harry%20Pierson.wmv"&gt;Videos/3-03
- Parsing Expression Grammars in FSharp - Harry Pierson&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-04%20-%20NStatic%20-%20Wesner%20Moise%20-%20SoftPerson.wmv"&gt;Videos/3-04
- NStatic - Wesner Moise - SoftPerson&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-05%20-%20Moonlight%20and%20Mono%20-%20Miguel%20de%20Icaza.wmv"&gt;Videos/3-05
- Moonlight and Mono - Miguel de Icaza&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-06%20-%20Visual%20Studio%20Shell%20-%20Aaron%20Marten.wmv"&gt;Videos/3-06
- Visual Studio Shell - Aaron Marten&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-07%20-%20Modeling%20and%20Languages%20-%20Don%20Box.wmv"&gt;Videos/3-07
- Modeling and Languages - Don Box&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-07%20-%20Modeling%20and%20Languages%20-%20Don%20Box_1.wmv"&gt;Videos/3-07
- Modeling and Languages - Don Box_1&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-08%20-%20Cobra%20-%20Chuck%20Esterbrook.wmv"&gt;Videos/3-08
- Cobra - Chuck Esterbrook&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://langnetsymposium.com/talks/Videos/3-09%20-%20Intentional%20-%20Magnus%20Christerson.wmv"&gt;Videos/3-09
- Intentional - Magnus Christerson&lt;/a&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=0ba7ef79-0617-4de0-8469-7a725385fca5" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,0ba7ef79-0617-4de0-8469-7a725385fca5.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">A few years ago I wrote a guid shrinker,
so that I could send out urls with guids in them, but have shorter messages. This
was for mobile work, and so I called them "Muid's" (for mobile unique identifier).<br /><br />
To do this, I wrote a converter that converted from a 16 byte guid to a 21 or 22 character
string, increasing the character set to 64 characters instead of the 16 characters
used by guid's default ToString() (A-Z, a-z, 0-9, - and $).<br /><br />
It was with a little embarrassment that I read <a href="http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx">Dave
Transom</a> and <a href="http://blog.madskristensen.dk/post/A-shorter-and-URL-friendly-GUID.aspx">Mads
Kristensen's</a> posts, where they use the Base64 encoder to do the character encoding,
while I didn't think of that, and wrote an encoder / decoder myself.<br /><br />
So check out Dave's <a href="http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx">ShortGuid</a> if
you want shorter urls with all the benefits of guids (very hard to guess, globally
unique), but don't want to sacrifice the extra 10-14 characters in every url.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec" /></body>
      <title>Shrinking Guids to fit on urls</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec.aspx</guid>
      <link>http://pageofwords.com/blog/2008/02/07/ShrinkingGuidsToFitOnUrls.aspx</link>
      <pubDate>Thu, 07 Feb 2008 21:16:35 GMT</pubDate>
      <description>A few years ago I wrote a guid shrinker, so that I could send out urls with guids in them, but have shorter messages. This was for mobile work, and so I called them "Muid's" (for mobile unique identifier).&lt;br&gt;
&lt;br&gt;
To do this, I wrote a converter that converted from a 16 byte guid to a 21 or 22 character
string, increasing the character set to 64 characters instead of the 16 characters
used by guid's default ToString() (A-Z, a-z, 0-9, - and $).&lt;br&gt;
&lt;br&gt;
It was with a little embarrassment that I read &lt;a href="http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx"&gt;Dave
Transom&lt;/a&gt; and &lt;a href="http://blog.madskristensen.dk/post/A-shorter-and-URL-friendly-GUID.aspx"&gt;Mads
Kristensen's&lt;/a&gt; posts, where they use the Base64 encoder to do the character encoding,
while I didn't think of that, and wrote an encoder / decoder myself.&lt;br&gt;
&lt;br&gt;
So check out Dave's &lt;a href="http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx"&gt;ShortGuid&lt;/a&gt; if
you want shorter urls with all the benefits of guids (very hard to guess, globally
unique), but don't want to sacrifice the extra 10-14 characters in every url.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,1dab2379-104c-4fa9-a6c9-2c4fb6a6c0ec.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=dea21fd2-665e-4aba-b9fb-4119efc44388</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,dea21fd2-665e-4aba-b9fb-4119efc44388.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,dea21fd2-665e-4aba-b9fb-4119efc44388.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=dea21fd2-665e-4aba-b9fb-4119efc44388</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">On Wednesday I listened to an interesting
talk on <a href="http://www.ironruby.net">IronRuby</a> by <a href="http://www.flanders.co.nz/blog/">Ivan
Porto Carrero</a>.<br /><br />
Ivan has a set of <a href="http://flanders.co.nz/blog/Tags/ironruby/default.aspx">interesting
posts</a> on IronRuby on his blog, including a <a href="http://flanders.co.nz/blog/archive/2007/10/30/a-little-browser-with-iron-ruby-and-wpf.aspx">few</a><a href="http://flanders.co.nz/blog/archive/2007/11/03/boot-camp-session.aspx">examples</a> on
how to wire up WPF apps using IronRuby rather than XAML.<br /><br /><a href="http://flanders.co.nz/blog/archive/2007/11/03/boot-camp-session.aspx">The
slides from his talk are available</a>.<br /><br />
Thanks Ivan!<br /><br />
Next session at the <a href="http://www.dot.net.nz/wellington">Wellington .NET User
Group</a> is 5 December. More details to follow.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=dea21fd2-665e-4aba-b9fb-4119efc44388" /></body>
      <title>IronRuby with Ivan Porto Carrero</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,dea21fd2-665e-4aba-b9fb-4119efc44388.aspx</guid>
      <link>http://pageofwords.com/blog/2007/11/23/IronRubyWithIvanPortoCarrero.aspx</link>
      <pubDate>Fri, 23 Nov 2007 19:51:10 GMT</pubDate>
      <description>On Wednesday I listened to an interesting talk on &lt;a href="http://www.ironruby.net"&gt;IronRuby&lt;/a&gt; by &lt;a href="http://www.flanders.co.nz/blog/"&gt;Ivan
Porto Carrero&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Ivan has a set of &lt;a href="http://flanders.co.nz/blog/Tags/ironruby/default.aspx"&gt;interesting
posts&lt;/a&gt; on IronRuby on his blog, including a &lt;a href="http://flanders.co.nz/blog/archive/2007/10/30/a-little-browser-with-iron-ruby-and-wpf.aspx"&gt;few&lt;/a&gt; &lt;a href="http://flanders.co.nz/blog/archive/2007/11/03/boot-camp-session.aspx"&gt;examples&lt;/a&gt; on
how to wire up WPF apps using IronRuby rather than XAML.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://flanders.co.nz/blog/archive/2007/11/03/boot-camp-session.aspx"&gt;The
slides from his talk are available&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Thanks Ivan!&lt;br&gt;
&lt;br&gt;
Next session at the &lt;a href="http://www.dot.net.nz/wellington"&gt;Wellington .NET User
Group&lt;/a&gt; is 5 December. More details to follow.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=dea21fd2-665e-4aba-b9fb-4119efc44388" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,dea21fd2-665e-4aba-b9fb-4119efc44388.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=fb90d273-8e34-4c9d-bd6b-47d4da4c1511</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,fb90d273-8e34-4c9d-bd6b-47d4da4c1511.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,fb90d273-8e34-4c9d-bd6b-47d4da4c1511.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fb90d273-8e34-4c9d-bd6b-47d4da4c1511</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Reading, transforming and instrumenting
MSIL has been something that has kept me interested (and sometimes over-wraught) since
the .NET framework came out in 2000.<br /><br />
It's interesting to see the benefits that a common intermediary language and a virtual
machine bring to the party: difficult problems can be dodged by programming language
designers (such as garbage collection); languages can interoperate; compiled code
can be platform independant, and JIT compiled when needed -- and doing fun stuff with
compiled code is easier (and more fun!) with MSIL or Java bytecode.<br /><br />
A few interesting things have happened with Java bytecode over the past few years,
with a couple of high profile cases recently. Java bytecode is no longer just the
output of a java compiler and the input for the Java Virtual Machine:<br /><ul><li>
Google's new Android phone platform translates from Java bytecode to its own virtual
machine -- which is not a JVM (<a href="http://tirania.org/blog/archive/2007/Nov-13-1.html">via
Miguel</a> and <a href="http://www.betaversion.org/%7Estefano/linotype/news/110/">Stefano</a>)</li><li><a href="http://www.ikvm.net/">IKVM.NET</a>, a runtime and set of libraries that convert
Java bytecode to .NET MSIL</li><li><a href="http://www.jython.org/Project/index.html">Jython</a>, a version of the python
language that compiles to the JVM</li></ul>
Of course the same thing happens in the .NET land -- there are a multitude of languages
that compile to MSIL, and MSIL can be run on the Microsoft .NET CLR, <a href="http://www.mono-project.com/">Mono's</a> runtime
engine and a few other runtimes built by Microsoft and third parties.<br /><br />
The angle taken by Google in developing an alternative virtual machine, rather than
using the CLR or Sun's JVM is very interesting. On one hand, they have the benefit
of full control of their platform, and this move means that they are not reliant on
other vendors solutions. They promise to open source the platform, so the typical
arguments about closed proprietary platforms may not apply, but it will still be interesting
to see how another VM fits into the ecosystem.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=fb90d273-8e34-4c9d-bd6b-47d4da4c1511" /></body>
      <title>Java bytecode as an intermediary intermediary language</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,fb90d273-8e34-4c9d-bd6b-47d4da4c1511.aspx</guid>
      <link>http://pageofwords.com/blog/2007/11/14/JavaBytecodeAsAnIntermediaryIntermediaryLanguage.aspx</link>
      <pubDate>Wed, 14 Nov 2007 10:14:33 GMT</pubDate>
      <description>Reading, transforming and instrumenting MSIL has been something that has kept me interested (and sometimes over-wraught) since the .NET framework came out in 2000.&lt;br&gt;
&lt;br&gt;
It's interesting to see the benefits that a common intermediary language and a virtual
machine bring to the party: difficult problems can be dodged by programming language
designers (such as garbage collection); languages can interoperate; compiled code
can be platform independant, and JIT compiled when needed -- and doing fun stuff with
compiled code is easier (and more fun!) with MSIL or Java bytecode.&lt;br&gt;
&lt;br&gt;
A few interesting things have happened with Java bytecode over the past few years,
with a couple of high profile cases recently. Java bytecode is no longer just the
output of a java compiler and the input for the Java Virtual Machine:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Google's new Android phone platform translates from Java bytecode to its own virtual
machine -- which is not a JVM (&lt;a href="http://tirania.org/blog/archive/2007/Nov-13-1.html"&gt;via
Miguel&lt;/a&gt; and &lt;a href="http://www.betaversion.org/%7Estefano/linotype/news/110/"&gt;Stefano&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ikvm.net/"&gt;IKVM.NET&lt;/a&gt;, a runtime and set of libraries that convert
Java bytecode to .NET MSIL&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.jython.org/Project/index.html"&gt;Jython&lt;/a&gt;, a version of the python
language that compiles to the JVM&lt;/li&gt;
&lt;/ul&gt;
Of course the same thing happens in the .NET land -- there are a multitude of languages
that compile to MSIL, and MSIL can be run on the Microsoft .NET CLR, &lt;a href="http://www.mono-project.com/"&gt;Mono's&lt;/a&gt; runtime
engine and a few other runtimes built by Microsoft and third parties.&lt;br&gt;
&lt;br&gt;
The angle taken by Google in developing an alternative virtual machine, rather than
using the CLR or Sun's JVM is very interesting. On one hand, they have the benefit
of full control of their platform, and this move means that they are not reliant on
other vendors solutions. They promise to open source the platform, so the typical
arguments about closed proprietary platforms may not apply, but it will still be interesting
to see how another VM fits into the ecosystem.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=fb90d273-8e34-4c9d-bd6b-47d4da4c1511" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,fb90d273-8e34-4c9d-bd6b-47d4da4c1511.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=3b232059-ca2a-4f32-8c99-c7b01b4ee1ce</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,3b232059-ca2a-4f32-8c99-c7b01b4ee1ce.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,3b232059-ca2a-4f32-8c99-c7b01b4ee1ce.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3b232059-ca2a-4f32-8c99-c7b01b4ee1ce</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I think it was <a href="http://www.actionthis.com/about/management.aspx">Derek</a> that
first convinced me of the beauty of the Guid, and I have been using them in databases
ever since.<br /><br /><a href="http://weblogs.asp.net/wwright/archive/2007/11/04/the-gospel-of-the-guid-and-why-it-matters.aspx">Wade
Wright</a> has written up the "<a href="http://weblogs.asp.net/wwright/archive/2007/11/04/the-gospel-of-the-guid-and-why-it-matters.aspx">Gospel
of the Guid</a>". It has a humorous coverage of some of the good Guid reasons:<br /><br /><ul><li>
No database roundtrips to get the next integer ID</li><li>
Easy merging, mirroring and deletion of erroneous merges</li><li>
Ability to wire up relationships in memory before saving</li></ul>
I remember when I first started using Guids there was talk of them not being unique,
due to dodgy network cards having the same MAC address. Thankfully that's no longer
a problem.<br /><br />
Something that I struggle with though, is the lack of type safety when using Guids.
e.g.<br /><br />
Guid personId = Guid.NewGuid();<br />
Guid bookId = Guid.NewGuid();<br /><br />
Library.BorrowBook(personId, bookId);<br /><br />
...or is it this way around?<br /><br />
Library.BorrowBook(bookId, personId);<br /><br /><p></p>
There's no compiler checking that the correct Guid is passed to the right parameter.
I've been toying with a Guid wrapper that would be a bit like a typedef in C++, but
typesafe. Has anyone already done this?<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3b232059-ca2a-4f32-8c99-c7b01b4ee1ce" /></body>
      <title>I like Guids</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,3b232059-ca2a-4f32-8c99-c7b01b4ee1ce.aspx</guid>
      <link>http://pageofwords.com/blog/2007/11/08/ILikeGuids.aspx</link>
      <pubDate>Thu, 08 Nov 2007 09:10:30 GMT</pubDate>
      <description>I think it was &lt;a href="http://www.actionthis.com/about/management.aspx"&gt;Derek&lt;/a&gt; that
first convinced me of the beauty of the Guid, and I have been using them in databases
ever since.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://weblogs.asp.net/wwright/archive/2007/11/04/the-gospel-of-the-guid-and-why-it-matters.aspx"&gt;Wade
Wright&lt;/a&gt; has written up the "&lt;a href="http://weblogs.asp.net/wwright/archive/2007/11/04/the-gospel-of-the-guid-and-why-it-matters.aspx"&gt;Gospel
of the Guid&lt;/a&gt;". It has a humorous coverage of some of the good Guid reasons:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
No database roundtrips to get the next integer ID&lt;/li&gt;
&lt;li&gt;
Easy merging, mirroring and deletion of erroneous merges&lt;/li&gt;
&lt;li&gt;
Ability to wire up relationships in memory before saving&lt;/li&gt;
&lt;/ul&gt;
I remember when I first started using Guids there was talk of them not being unique,
due to dodgy network cards having the same MAC address. Thankfully that's no longer
a problem.&lt;br&gt;
&lt;br&gt;
Something that I struggle with though, is the lack of type safety when using Guids.
e.g.&lt;br&gt;
&lt;br&gt;
Guid personId = Guid.NewGuid();&lt;br&gt;
Guid bookId = Guid.NewGuid();&lt;br&gt;
&lt;br&gt;
Library.BorrowBook(personId, bookId);&lt;br&gt;
&lt;br&gt;
...or is it this way around?&lt;br&gt;
&lt;br&gt;
Library.BorrowBook(bookId, personId);&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
There's no compiler checking that the correct Guid is passed to the right parameter.
I've been toying with a Guid wrapper that would be a bit like a typedef in C++, but
typesafe. Has anyone already done this?&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3b232059-ca2a-4f32-8c99-c7b01b4ee1ce" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,3b232059-ca2a-4f32-8c99-c7b01b4ee1ce.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e51324bc-b2e2-4a9c-b42e-8c422cf8c902</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e51324bc-b2e2-4a9c-b42e-8c422cf8c902.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e51324bc-b2e2-4a9c-b42e-8c422cf8c902.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e51324bc-b2e2-4a9c-b42e-8c422cf8c902</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://jamesnewkirk.typepad.com/">James
Newkirk</a> and <a href="http://www.agileprogrammer.com/dotnetguy/">Brad Wilson</a> have
cooked up a new testing framework for .NET development: <a href="http://www.codeplex.com/xunit">xUnit.net</a>.<br /><br />
In his blog post <a href="http://jamesnewkirk.typepad.com/posts/2007/09/announcing-xuni.html">announcing
xUnit.net</a>, James outlined the reasons why they have created a new framework --
primarily to bake best practice techniques into the test framework, and leverage some
of the newer .NET features.<br /><br />
The <a href="http://www.codeplex.com/xunit/Wiki/View.aspx?title=Comparisons">Comparison
between Nunit, MSTest and xUnit.net</a> page on the site lists some of the differences
between xUnit.net and Nunit / MSTest. Removing setup and teardown, and providing aspect-like
functionality are both interesting angles which I want to spend some time with.<br /><br />
Here's a couple of examples from the samples download. First, an example of usage
of BeforeAfterTestAttributes, which let you add behaviour before and after the execution
of a test (ala AOP):<br /><br /><font face="Courier New">[Test, TracingSplicer]<br />
public void TestThis()<br />
{<br />
}<br /><br />
...<br /><br />
public class TracingSplicerAttribute : BeforeAfterTestAttribute<br />
{<br />
    public override void Before(MethodInfo methodUnderTest)<br />
    {<br />
        Console.WriteLine("Before : {0}.{1}", 
<br />
            methodUnderTest.DeclaringType.FullName,
methodUnderTest.Name);<br />
    }<br /><br />
    public override void After(MethodInfo methodUnderTest)<br />
    {<br />
        Console.WriteLine("After : {0}.{1}", 
<br />
            methodUnderTest.DeclaringType.FullName,
methodUnderTest.Name);<br />
    }<br />
}<br /></font><br /><br />
Here's an example of test method extensibility:<br /><font face="Courier New"><br />
[RepeatTest(5, Timeout=500)]<br />
public void RepeatingTestMethod()<br /></font><br />
You can create your own attributes that inherit from the TestAttribute base class,
and define what will happen when the test runs (in this example, the test will run
5 times).<br /><br /><br />
Good work guys, looks useful!<br /><br />
Kirk<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e51324bc-b2e2-4a9c-b42e-8c422cf8c902" /></body>
      <title>xUnit.net test framework - looks xInteresting</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e51324bc-b2e2-4a9c-b42e-8c422cf8c902.aspx</guid>
      <link>http://pageofwords.com/blog/2007/09/21/xUnitnetTestFrameworkLooksXInteresting.aspx</link>
      <pubDate>Fri, 21 Sep 2007 10:03:26 GMT</pubDate>
      <description>&lt;a href="http://jamesnewkirk.typepad.com/"&gt;James Newkirk&lt;/a&gt; and &lt;a href="http://www.agileprogrammer.com/dotnetguy/"&gt;Brad
Wilson&lt;/a&gt; have cooked up a new testing framework for .NET development: &lt;a href="http://www.codeplex.com/xunit"&gt;xUnit.net&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
In his blog post &lt;a href="http://jamesnewkirk.typepad.com/posts/2007/09/announcing-xuni.html"&gt;announcing
xUnit.net&lt;/a&gt;, James outlined the reasons why they have created a new framework --
primarily to bake best practice techniques into the test framework, and leverage some
of the newer .NET features.&lt;br&gt;
&lt;br&gt;
The &lt;a href="http://www.codeplex.com/xunit/Wiki/View.aspx?title=Comparisons"&gt;Comparison
between Nunit, MSTest and xUnit.net&lt;/a&gt; page on the site lists some of the differences
between xUnit.net and Nunit / MSTest. Removing setup and teardown, and providing aspect-like
functionality are both interesting angles which I want to spend some time with.&lt;br&gt;
&lt;br&gt;
Here's a couple of examples from the samples download. First, an example of usage
of BeforeAfterTestAttributes, which let you add behaviour before and after the execution
of a test (ala AOP):&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;[Test, TracingSplicer]&lt;br&gt;
public void TestThis()&lt;br&gt;
{&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
...&lt;br&gt;
&lt;br&gt;
public class TracingSplicerAttribute : BeforeAfterTestAttribute&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void Before(MethodInfo methodUnderTest)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Before : {0}.{1}", 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; methodUnderTest.DeclaringType.FullName,
methodUnderTest.Name);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void After(MethodInfo methodUnderTest)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("After : {0}.{1}", 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; methodUnderTest.DeclaringType.FullName,
methodUnderTest.Name);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Here's an example of test method extensibility:&lt;br&gt;
&lt;font face="Courier New"&gt;
&lt;br&gt;
[RepeatTest(5, Timeout=500)]&lt;br&gt;
public void RepeatingTestMethod()&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
You can create your own attributes that inherit from the TestAttribute base class,
and define what will happen when the test runs (in this example, the test will run
5 times).&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Good work guys, looks useful!&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e51324bc-b2e2-4a9c-b42e-8c422cf8c902" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e51324bc-b2e2-4a9c-b42e-8c422cf8c902.aspx</comments>
      <category>.NET;Software</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=b0abfb18-2e5d-4092-8800-6695e1f7c042</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,b0abfb18-2e5d-4092-8800-6695e1f7c042.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,b0abfb18-2e5d-4092-8800-6695e1f7c042.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b0abfb18-2e5d-4092-8800-6695e1f7c042</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.bluebytesoftware.com/blog/PermaLink,guid,5a15898b-6c1e-46cb-8553-04f08bb9336e.aspx">Joe
Duffy</a> links to a new MSDN Magazine article on PLINQ: <a href="http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx">"Parallel
LINQ - Running Queries on Multiple Processors"</a>. 
<br /><br />
We have been hearing little bits about PLINQ, and a CTP is on the way. PLINQ redefines
the query operators from standard LINQ and makes them split the work across multiple
processors.<br /><br />
One of the big challenges that we will have as software developers over the coming
years is developing for multiple cores. As extra processors and cores are added to
our PC's, the clock speed of the machine isn't increasing as rapidly as in the past,
so single-threaded applications may actually run slower than on a high-end single
processor machine.<br /><br />
PLINQ takes an interesting approach, and redefines the standard LINQ operators that
are used for in-memory queries (such as OrderBy, Join, Where etc), and spreads the
work over the available CPUs. As LINQ uses a declarative "Tell me what to do, not
how to do it" query syntax, there are hardly any changes to the programming model:<br /><ul><li>
Reference the System.Concurrency.dll assembly during compilation.</li><li>
Wrap your data source in an IParallelEnumerable&lt;T&gt; with a call to the System.Linq.ParallelEnumerable.AsParallel
extension method.</li><ul><li>
i.e. var q = from x in data<b>.AsParallel()</b> ...</li></ul><li>
Optional: choose your pipelining model: pipelined, stop and go, inverted enumeration.
You choose this when processing the results.</li><li>
Don't rely on LINQ's default ordering of results. Explicitly order results if it's
important to your program.<br /></li><li>
Change the way you handle exceptions. Multiple exceptions may be thrown in the course
of one query, and with PLINQ will be wrapped into a MultipleFailuresException.</li><li>
Avoid modifying data in your where clause, or otherwise mutating shared state during
the course of your LINQ query. You may open yourself to race conditions.</li></ul>
All of these steps are covered in depth in <a href="http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx#S2">the
article</a>, but on the surface of it, it looks like Joe and the PLINQ team have made
the transition from single to parallel LINQ require as little work as possible. I
can't wait to try it out when the CTP drops!<br /><br />
Note that PLINQ only applies to LINQ to Objects and LINQ to Xml queries -- SQL Server
still does it's own parallel processing. PLINQ parallelises the query execution that
occurs within the .NET program.<br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b0abfb18-2e5d-4092-8800-6695e1f7c042" /></body>
      <title>PLINQ - Parallel speed-up with minimal code changes</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,b0abfb18-2e5d-4092-8800-6695e1f7c042.aspx</guid>
      <link>http://pageofwords.com/blog/2007/09/15/PLINQParallelSpeedupWithMinimalCodeChanges.aspx</link>
      <pubDate>Sat, 15 Sep 2007 18:56:32 GMT</pubDate>
      <description>&lt;a href="http://www.bluebytesoftware.com/blog/PermaLink,guid,5a15898b-6c1e-46cb-8553-04f08bb9336e.aspx"&gt;Joe
Duffy&lt;/a&gt; links to a new MSDN Magazine article on PLINQ: &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx"&gt;"Parallel
LINQ - Running Queries on Multiple Processors"&lt;/a&gt;. 
&lt;br&gt;
&lt;br&gt;
We have been hearing little bits about PLINQ, and a CTP is on the way. PLINQ redefines
the query operators from standard LINQ and makes them split the work across multiple
processors.&lt;br&gt;
&lt;br&gt;
One of the big challenges that we will have as software developers over the coming
years is developing for multiple cores. As extra processors and cores are added to
our PC's, the clock speed of the machine isn't increasing as rapidly as in the past,
so single-threaded applications may actually run slower than on a high-end single
processor machine.&lt;br&gt;
&lt;br&gt;
PLINQ takes an interesting approach, and redefines the standard LINQ operators that
are used for in-memory queries (such as OrderBy, Join, Where etc), and spreads the
work over the available CPUs. As LINQ uses a declarative "Tell me what to do, not
how to do it" query syntax, there are hardly any changes to the programming model:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Reference the System.Concurrency.dll assembly during compilation.&lt;/li&gt;
&lt;li&gt;
Wrap your data source in an IParallelEnumerable&amp;lt;T&amp;gt; with a call to the System.Linq.ParallelEnumerable.AsParallel
extension method.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
i.e. var q = from x in data&lt;b&gt;.AsParallel()&lt;/b&gt; ...&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Optional: choose your pipelining model: pipelined, stop and go, inverted enumeration.
You choose this when processing the results.&lt;/li&gt;
&lt;li&gt;
Don't rely on LINQ's default ordering of results. Explicitly order results if it's
important to your program.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Change the way you handle exceptions. Multiple exceptions may be thrown in the course
of one query, and with PLINQ will be wrapped into a MultipleFailuresException.&lt;/li&gt;
&lt;li&gt;
Avoid modifying data in your where clause, or otherwise mutating shared state during
the course of your LINQ query. You may open yourself to race conditions.&lt;/li&gt;
&lt;/ul&gt;
All of these steps are covered in depth in &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx#S2"&gt;the
article&lt;/a&gt;, but on the surface of it, it looks like Joe and the PLINQ team have made
the transition from single to parallel LINQ require as little work as possible. I
can't wait to try it out when the CTP drops!&lt;br&gt;
&lt;br&gt;
Note that PLINQ only applies to LINQ to Objects and LINQ to Xml queries -- SQL Server
still does it's own parallel processing. PLINQ parallelises the query execution that
occurs within the .NET program.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=b0abfb18-2e5d-4092-8800-6695e1f7c042" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,b0abfb18-2e5d-4092-8800-6695e1f7c042.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=97971e16-7b31-46ee-988a-328eb79717e1</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,97971e16-7b31-46ee-988a-328eb79717e1.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,97971e16-7b31-46ee-988a-328eb79717e1.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=97971e16-7b31-46ee-988a-328eb79717e1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Want to transfer your <a href="http://icanhascheezburger.com/">cheezburger</a> skillz
to the command prompt? Navigate your files using lolshell.
</p>
        <p>
          <a href="http://pageofwords.com/blog/content/binary/lolshell.ps1">Download lolshell.ps1</a> [Requires
PowerShell 1.0] 
</p>
        <p>
To give you a taste of the awesome powers of lolshell, here's a transcript. My favourite
function is WTF. 
</p>
        <pre>
          <font color="#ff0000">1&gt;</font>
          <font color="#0000ff">. ./lolshell.ps1</font> |\_/|
(. .) =w= (\ / ^ \// (|| ||) ,""_""_ . IM IN UR SHEL FIDLNG UR BITS <font color="#ff0000">2&gt;</font><font color="#0000ff">IM
IN UR C DRIVE</font> KTHX <font color="#ff0000">3&gt;</font><font color="#0000ff">IM
WATCHN YR VIDEOS</font> VIDEOS WATCHN U <font color="#ff0000">4&gt;</font><font color="#0000ff">WARE
AM I?</font> LOL. I CAN SEEZ U HRE: C:\Users\kirk\Videos <font color="#ff0000">5&gt;</font><font color="#0000ff">GIMMEH
ALL MI FILZ</font> Directory: Microsoft.PowerShell.Core\FileSystem::C:\Users\kirk\Vi
deos Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 28/02/2007
12:40 a.m. 14882401 Vista_0001.wmv -a--- 28/02/2007 11:10 p.m. 14816631 Vista_0002.wmv <font color="#ff0000">6&gt;</font><font color="#0000ff">IM
WATCHN YR Vista_0001.wmv</font> [Video opens in Media Player] <font color="#ff0000">7&gt;</font><font color="#0000ff">WARE
AM I?</font> LOL. I CAN SEEZ U HRE: C:\Users\kirk\Videos <font color="#ff0000">8&gt;</font><font color="#0000ff">IM
WATCHN YR MOMMA</font> U GO 'WAY <font color="#ff0000">9&gt;</font><font color="#0000ff">WARE
AM I?</font> LOL. I CAN SEEZ U HRE: C:\Users\kirk <font color="#ff0000">10&gt;</font><font color="#0000ff">IM
IN UR Z DRIVE</font> OMGWTF?! <font color="#ff0000">11&gt;</font><font color="#0000ff">WTF
JUST HAPND?</font> WTF? LOL. HAPND JUST lolshell :) Cannot find drive. A drive with
name 'Z' does not exist. <font color="#ff0000">12&gt;</font><font color="#0000ff">HOW
DUZ I PRINT?</font> NAME Out-Printer SYNOPSIS Sends output to a printer. ... [More
help prints here] <font color="#ff0000">13&gt;</font><font color="#0000ff">OKTHXBYE</font></pre>
        <a href="http://pageofwords.com/blog/content/binary/lolshell.ps1">lolshell.ps1 (3.5
KB)</a>
        <a href="http://pageofwords.com/blog/content/binary/lolshell1.ps1">
        </a>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=97971e16-7b31-46ee-988a-328eb79717e1" />
      </body>
      <title>Introducing.... lolshell</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,97971e16-7b31-46ee-988a-328eb79717e1.aspx</guid>
      <link>http://pageofwords.com/blog/2007/09/08/IntroducingLolshell.aspx</link>
      <pubDate>Sat, 08 Sep 2007 11:05:13 GMT</pubDate>
      <description>&lt;p&gt;
Want to transfer your &lt;a href="http://icanhascheezburger.com/"&gt;cheezburger&lt;/a&gt; skillz
to the command prompt? Navigate your files using lolshell.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/lolshell.ps1"&gt;Download lolshell.ps1&lt;/a&gt; [Requires
PowerShell 1.0] 
&lt;/p&gt;
&lt;p&gt;
To give you a taste of the awesome powers of lolshell, here's a transcript. My favourite
function is WTF. 
&lt;/p&gt;
&lt;pre&gt;&lt;font color="#ff0000"&gt;1&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;. ./lolshell.ps1&lt;/font&gt; |\_/|
(. .) =w= (\ / ^ \// (|| ||) ,""_""_ . IM IN UR SHEL FIDLNG UR BITS &lt;font color="#ff0000"&gt;2&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;IM
IN UR C DRIVE&lt;/font&gt; KTHX &lt;font color="#ff0000"&gt;3&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;IM
WATCHN YR VIDEOS&lt;/font&gt; VIDEOS WATCHN U &lt;font color="#ff0000"&gt;4&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;WARE
AM I?&lt;/font&gt; LOL. I CAN SEEZ U HRE: C:\Users\kirk\Videos &lt;font color="#ff0000"&gt;5&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;GIMMEH
ALL MI FILZ&lt;/font&gt; Directory: Microsoft.PowerShell.Core\FileSystem::C:\Users\kirk\Vi
deos Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 28/02/2007
12:40 a.m. 14882401 Vista_0001.wmv -a--- 28/02/2007 11:10 p.m. 14816631 Vista_0002.wmv &lt;font color="#ff0000"&gt;6&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;IM
WATCHN YR Vista_0001.wmv&lt;/font&gt; [Video opens in Media Player] &lt;font color="#ff0000"&gt;7&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;WARE
AM I?&lt;/font&gt; LOL. I CAN SEEZ U HRE: C:\Users\kirk\Videos &lt;font color="#ff0000"&gt;8&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;IM
WATCHN YR MOMMA&lt;/font&gt; U GO 'WAY &lt;font color="#ff0000"&gt;9&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;WARE
AM I?&lt;/font&gt; LOL. I CAN SEEZ U HRE: C:\Users\kirk &lt;font color="#ff0000"&gt;10&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;IM
IN UR Z DRIVE&lt;/font&gt; OMGWTF?! &lt;font color="#ff0000"&gt;11&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;WTF
JUST HAPND?&lt;/font&gt; WTF? LOL. HAPND JUST lolshell :) Cannot find drive. A drive with
name 'Z' does not exist. &lt;font color="#ff0000"&gt;12&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;HOW
DUZ I PRINT?&lt;/font&gt; NAME Out-Printer SYNOPSIS Sends output to a printer. ... [More
help prints here] &lt;font color="#ff0000"&gt;13&amp;gt;&lt;/font&gt; &lt;font color="#0000ff"&gt;OKTHXBYE&lt;/font&gt; &lt;/pre&gt;
&lt;a href="http://pageofwords.com/blog/content/binary/lolshell.ps1"&gt;lolshell.ps1 (3.5
KB)&lt;/a&gt;&lt;a href="http://pageofwords.com/blog/content/binary/lolshell1.ps1"&gt; &lt;/a&gt;&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=97971e16-7b31-46ee-988a-328eb79717e1" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,97971e16-7b31-46ee-988a-328eb79717e1.aspx</comments>
      <category>.NET;PowerShell;What the?</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=d501c594-3156-4cc9-be9c-c45789eaa11d</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,d501c594-3156-4cc9-be9c-c45789eaa11d.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,d501c594-3156-4cc9-be9c-c45789eaa11d.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d501c594-3156-4cc9-be9c-c45789eaa11d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Well this was interesting - Microsoft have
embraced Mono's Moonlight as their official Linux version of Silverlight. From <a href="http://weblogs.asp.net/scottgu/archive/2007/09/04/silverlight-1-0-released-and-silverlight-for-linux-announced.aspx">Scott's
blog post</a>:<br /><br /><blockquote><i><font face="arial" size="2">Over the last few months we've been working
to enable Silverlight support on Linux, and today we are announcing a formal
partnership with Novell to provide a great Silverlight implementation for Linux. 
Microsoft will be delivering Silverlight Media Codecs for Linux, and Novell will be
building a 100% compatible Silverlight runtime implementation called "Moonlight".</font></i></blockquote>I
think it's interesting for several reasons -- Microsoft partnering with Novell to
release an open-source version of Silverlight, when the Windows / Mac one is closed;
and that they are planning to make Moonlight "100% compatible".<br /><br />
100% compatability is a pretty strong statement. I know that the Mono project has
been aiming for that for a while, but has had to work around bugs or inconsistencies
in the CLR to achieve it. I wonder how Microsoft is helping Novell achieve that?<br /><br />
Miguel has <a href="http://tirania.org/blog/archive/2007/Sep-05.html">some details</a> on
who was involved from within Microsoft, and how the test suite will be shared between
the two companies.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=d501c594-3156-4cc9-be9c-c45789eaa11d" /></body>
      <title>Mono on Linux Moonlight</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,d501c594-3156-4cc9-be9c-c45789eaa11d.aspx</guid>
      <link>http://pageofwords.com/blog/2007/09/05/MonoOnLinuxMoonlight.aspx</link>
      <pubDate>Wed, 05 Sep 2007 10:21:16 GMT</pubDate>
      <description>Well this was interesting - Microsoft have embraced Mono's Moonlight as their official Linux version of Silverlight. From &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/04/silverlight-1-0-released-and-silverlight-for-linux-announced.aspx"&gt;Scott's
blog post&lt;/a&gt;:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;&lt;font face="arial" size="2"&gt;Over the last few months we've been working
to enable Silverlight support on&amp;nbsp;Linux, and today&amp;nbsp;we are announcing a formal
partnership with Novell to provide a&amp;nbsp;great Silverlight implementation for Linux.&amp;nbsp;
Microsoft will be delivering Silverlight Media Codecs for Linux, and Novell will be
building a 100% compatible Silverlight&amp;nbsp;runtime implementation called "Moonlight".&lt;/font&gt;&lt;/i&gt;&lt;/blockquote&gt;I
think it's interesting for several reasons -- Microsoft partnering with Novell to
release an open-source version of Silverlight, when the Windows / Mac one is closed;
and that they are planning to make Moonlight "100% compatible".&lt;br&gt;
&lt;br&gt;
100% compatability is a pretty strong statement. I know that the Mono project has
been aiming for that for a while, but has had to work around bugs or inconsistencies
in the CLR to achieve it. I wonder how Microsoft is helping Novell achieve that?&lt;br&gt;
&lt;br&gt;
Miguel has &lt;a href="http://tirania.org/blog/archive/2007/Sep-05.html"&gt;some details&lt;/a&gt; on
who was involved from within Microsoft, and how the test suite will be shared between
the two companies.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=d501c594-3156-4cc9-be9c-c45789eaa11d" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,d501c594-3156-4cc9-be9c-c45789eaa11d.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=a4ee75c4-eaf5-4ec2-ba69-add74c2a458e</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,a4ee75c4-eaf5-4ec2-ba69-add74c2a458e.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,a4ee75c4-eaf5-4ec2-ba69-add74c2a458e.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a4ee75c4-eaf5-4ec2-ba69-add74c2a458e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Microsoft just hired two developers I respect:<br /><ul><li><a href="http://www.hanselman.com/blog/BlueBadge.aspx">Scott Hanselman</a>, of <a href="http://www.hanselman.com/blog/">Computer
Zen,</a><a href="http://www.hanselminutes.com/">Hanselminutes</a>, <a href="http://www.hanselman.com/blog/RoryAndScottGoToTechEdALoveStory.aspx">Bathrooming
with Rory</a> fame has just <a href="http://www.hanselman.com/blog/BlueBadge.aspx">signed
with Microsoft</a> in ScottGu's team.</li><li><a href="http://base4.net/">Alex James</a>, inventor of <a href="http://base4.net/Base4.NET.aspx">Base4.net</a> and
NZ user grouper and MVP announced he's <a href="http://base4.net/Blog.aspx?ID=538">off
to Seattle</a>, and joining the Data Programmability team.</li></ul>
Here's hoping we can look forward to both of them coming to the next New Zealand TechEd
(and Code Camp).<br /><br />
I'm always impressed by the super-clever people that Microsoft hire. Congratulations,
Microsoft!<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a4ee75c4-eaf5-4ec2-ba69-add74c2a458e" /></body>
      <title>Congratulations, Microsoft!</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,a4ee75c4-eaf5-4ec2-ba69-add74c2a458e.aspx</guid>
      <link>http://pageofwords.com/blog/2007/07/22/CongratulationsMicrosoft.aspx</link>
      <pubDate>Sun, 22 Jul 2007 08:28:23 GMT</pubDate>
      <description>Microsoft just hired two developers I respect:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.hanselman.com/blog/BlueBadge.aspx"&gt;Scott Hanselman&lt;/a&gt;, of &lt;a href="http://www.hanselman.com/blog/"&gt;Computer
Zen,&lt;/a&gt; &lt;a href="http://www.hanselminutes.com/"&gt;Hanselminutes&lt;/a&gt;, &lt;a href="http://www.hanselman.com/blog/RoryAndScottGoToTechEdALoveStory.aspx"&gt;Bathrooming
with Rory&lt;/a&gt; fame has just &lt;a href="http://www.hanselman.com/blog/BlueBadge.aspx"&gt;signed
with Microsoft&lt;/a&gt; in ScottGu's team.&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://base4.net/"&gt;Alex James&lt;/a&gt;, inventor of &lt;a href="http://base4.net/Base4.NET.aspx"&gt;Base4.net&lt;/a&gt; and
NZ user grouper and MVP announced he's &lt;a href="http://base4.net/Blog.aspx?ID=538"&gt;off
to Seattle&lt;/a&gt;, and joining the Data Programmability team.&lt;/li&gt;
&lt;/ul&gt;
Here's hoping we can look forward to both of them coming to the next New Zealand TechEd
(and Code Camp).&lt;br&gt;
&lt;br&gt;
I'm always impressed by the super-clever people that Microsoft hire. Congratulations,
Microsoft!&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a4ee75c4-eaf5-4ec2-ba69-add74c2a458e" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,a4ee75c4-eaf5-4ec2-ba69-add74c2a458e.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=563b52ea-7506-423a-bce8-959bb5099928</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,563b52ea-7506-423a-bce8-959bb5099928.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,563b52ea-7506-423a-bce8-959bb5099928.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=563b52ea-7506-423a-bce8-959bb5099928</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">dot.net.nz has got it good!<br /><br /><a href="http://radar.oreilly.com/andyo/">Andy Oram</a><a href="http://radar.oreilly.com/archives/2007/07/recent_research.html">posted
to the O'Reilly Radar</a> about his recent research on mailing lists, and linked to
his article <a href="http://praxagora.com/andyo/professional/mailing_list_follow_up/">"How
to Help Mailing Lists Help Readers"</a>.<br /><br />
In his article, Andy followed threads on some mailing lists (Linux, Perl, Ruby), and
uncovered some patterns of behaviour (summarised below):<br /><ul><li>
Many questions aren't satisfactorily answered (46%)<br /></li><li>
Helpers give up after a few attempts</li><li>
Beginner users have fundamental gaps in knowledge, and need direction to other documentation
sources</li></ul>
Now despite recent unrest about the effectiveness of the dotnet mailing list (at www.dot.net.nz),
in particular the performance of the mail sender, I've always been convinced of the
relevance of the answers given on the list, and impressed by the tone of the replies.
We've got a nice little community going, and people offer quite in-depth help wherever
they can.<br /><br />
I'm always impressed when people go out of their way to solve a problem, such as installing
a piece of software to help diagnose someones problem (<a href="http://hestia.typepad.com/flatlander/">Ivan
Towlson</a>, I think that was you :) ), or reliably pitching in to solve a problem
(PeterB and "shane ~" are among the regular "helpers").<br /><br />
So I collected some statistics following a similar process to Andy's:<br /><ul><li>
15 recent threads from the NZ dotnet mailing list where a specific question was asked</li><li>
I measured similar statistics on the effectiveness and time to resolution, although
for some of the threads where the orginal poster didn't reply with thanks, I defined
"resolution" subjectively as whether I thought a satisfactory answer had been given</li><li>
A count of the number of messages in each thread, the number of helpful / on topic
messages, off-topic, irrelevant and unhelpful messages</li></ul>
Results:<br /><br /><ul><li><b>80% </b>of questions received a <b>satisfactory</b> reply!</li><li>
There were <b>no </b>off-topic, irrelevant or unhelpful messages!</li><li>
Median time to resolution was <b>20 minutes</b>!</li><li>
Longest time to resolution was 2hrs 34mins.</li><li>
Best response times are early-mid morning, and mid-afternoon. Slower responses over
lunch time.</li></ul>
I expected to see the dotnet list coming out well, but when you compare these numbers
to the ones Andy collected, and even if you factor in some differences due to sampling
/ processing technique, the differences are staggering:<br /><br />
Table 1 (modified). Resolution times for questions on mailing lists<br /><table border="1"><tbody><tr><td><br /></td><td><b>Minimum</b></td><td><b>Median</b></td><td><b>Maximum</b></td></tr><tr><td><b>NZ .NET list</b></td><td><b>8 mins</b></td><td><b>20 mins</b></td><td><b>2 hours, 34 mins</b></td></tr><tr><td>
Perl</td><td>
2 hours</td><td>
8 hours</td><td>
1 day, 21 hours</td></tr><tr><td>
Rails</td><td>
0.5 hours</td><td>
16 hours</td><td>
7 days, 10 hours</td></tr><tr><td>
Both operating systems</td><td>
0.1 hours</td><td>
10.5 hours</td><td>
2 days, 10 hours</td></tr><tr><td>
Both languages</td><td>
0.5 hours</td><td>
13.5 hours</td><td>
7 days, 10 hours</td></tr><tr><td>
All lists</td><td>
0.1 hours</td><td>
11.5 hours</td><td>
7 days, 10 hours</td></tr></tbody></table><br /><br />
Some of the things that I believe make the dotnet list so successful:<br /><br /><ul><li>
The list is an extension of the user groups, and many people know each other in person<br /></li><li>
Everyone is in the same timezone and industry, which means the responses are fast,
and usually at the same time of day that you need help<br /></li><li>
Off-topic conversation is kept to a seperate off-topic mailing list</li><li>
The list subscribers have a wide spread of knowledge and experience, with some members
having very deep .NET knowledge</li><li>
Timaru is discussed monthly :)</li></ul>
The list server that runs the mailing lists (dotnet, sqlserver, dotnet-offtopic and
others) has been tirelessly maintained by <a href="http://blog.svoboda.co.nz/">Lukas
Svoboda</a> over the past 5 or 6 years, and the not inconsiderable costs of sending
out many thousands of emails a day has been sponsored by him, Microsoft, Irongate,
Orbiz, Intergen and others over the years. Thanks!<br /><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=563b52ea-7506-423a-bce8-959bb5099928" /></body>
      <title>Effectiveness of mailing lists</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,563b52ea-7506-423a-bce8-959bb5099928.aspx</guid>
      <link>http://pageofwords.com/blog/2007/07/17/EffectivenessOfMailingLists.aspx</link>
      <pubDate>Tue, 17 Jul 2007 12:10:01 GMT</pubDate>
      <description>dot.net.nz has got it good!&lt;br&gt;
&lt;br&gt;
&lt;a href="http://radar.oreilly.com/andyo/"&gt;Andy Oram&lt;/a&gt; &lt;a href="http://radar.oreilly.com/archives/2007/07/recent_research.html"&gt;posted
to the O'Reilly Radar&lt;/a&gt; about his recent research on mailing lists, and linked to
his article &lt;a href="http://praxagora.com/andyo/professional/mailing_list_follow_up/"&gt;"How
to Help Mailing Lists Help Readers"&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
In his article, Andy followed threads on some mailing lists (Linux, Perl, Ruby), and
uncovered some patterns of behaviour (summarised below):&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Many questions aren't satisfactorily answered (46%)&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Helpers give up after a few attempts&lt;/li&gt;
&lt;li&gt;
Beginner users have fundamental gaps in knowledge, and need direction to other documentation
sources&lt;/li&gt;
&lt;/ul&gt;
Now despite recent unrest about the effectiveness of the dotnet mailing list (at www.dot.net.nz),
in particular the performance of the mail sender, I've always been convinced of the
relevance of the answers given on the list, and impressed by the tone of the replies.
We've got a nice little community going, and people offer quite in-depth help wherever
they can.&lt;br&gt;
&lt;br&gt;
I'm always impressed when people go out of their way to solve a problem, such as installing
a piece of software to help diagnose someones problem (&lt;a href="http://hestia.typepad.com/flatlander/"&gt;Ivan
Towlson&lt;/a&gt;, I think that was you :) ), or reliably pitching in to solve a problem
(PeterB and "shane ~" are among the regular "helpers").&lt;br&gt;
&lt;br&gt;
So I collected some statistics following a similar process to Andy's:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
15 recent threads from the NZ dotnet mailing list where a specific question was asked&lt;/li&gt;
&lt;li&gt;
I measured similar statistics on the effectiveness and time to resolution, although
for some of the threads where the orginal poster didn't reply with thanks, I defined
"resolution" subjectively as whether I thought a satisfactory answer had been given&lt;/li&gt;
&lt;li&gt;
A count of the number of messages in each thread, the number of helpful / on topic
messages, off-topic, irrelevant and unhelpful messages&lt;/li&gt;
&lt;/ul&gt;
Results:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;80% &lt;/b&gt;of questions received a &lt;b&gt;satisfactory&lt;/b&gt; reply!&lt;/li&gt;
&lt;li&gt;
There were &lt;b&gt;no &lt;/b&gt;off-topic, irrelevant or unhelpful messages!&lt;/li&gt;
&lt;li&gt;
Median time to resolution was &lt;b&gt;20 minutes&lt;/b&gt;!&lt;/li&gt;
&lt;li&gt;
Longest time to resolution was 2hrs 34mins.&lt;/li&gt;
&lt;li&gt;
Best response times are early-mid morning, and mid-afternoon. Slower responses over
lunch time.&lt;/li&gt;
&lt;/ul&gt;
I expected to see the dotnet list coming out well, but when you compare these numbers
to the ones Andy collected, and even if you factor in some differences due to sampling
/ processing technique, the differences are staggering:&lt;br&gt;
&lt;br&gt;
Table 1 (modified). Resolution times for questions on mailing lists&lt;br&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;br&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;Minimum&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;Median&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;Maximum&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;b&gt;NZ .NET list&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;8 mins&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;20 mins&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;
&lt;b&gt;2 hours, 34 mins&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Perl&lt;/td&gt;
&lt;td&gt;
2 hours&lt;/td&gt;
&lt;td&gt;
8 hours&lt;/td&gt;
&lt;td&gt;
1 day, 21 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Rails&lt;/td&gt;
&lt;td&gt;
0.5 hours&lt;/td&gt;
&lt;td&gt;
16 hours&lt;/td&gt;
&lt;td&gt;
7 days, 10 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Both operating systems&lt;/td&gt;
&lt;td&gt;
0.1 hours&lt;/td&gt;
&lt;td&gt;
10.5 hours&lt;/td&gt;
&lt;td&gt;
2 days, 10 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
Both languages&lt;/td&gt;
&lt;td&gt;
0.5 hours&lt;/td&gt;
&lt;td&gt;
13.5 hours&lt;/td&gt;
&lt;td&gt;
7 days, 10 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
All lists&lt;/td&gt;
&lt;td&gt;
0.1 hours&lt;/td&gt;
&lt;td&gt;
11.5 hours&lt;/td&gt;
&lt;td&gt;
7 days, 10 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;br&gt;
Some of the things that I believe make the dotnet list so successful:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
The list is an extension of the user groups, and many people know each other in person&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Everyone is in the same timezone and industry, which means the responses are fast,
and usually at the same time of day that you need help&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Off-topic conversation is kept to a seperate off-topic mailing list&lt;/li&gt;
&lt;li&gt;
The list subscribers have a wide spread of knowledge and experience, with some members
having very deep .NET knowledge&lt;/li&gt;
&lt;li&gt;
Timaru is discussed monthly :)&lt;/li&gt;
&lt;/ul&gt;
The list server that runs the mailing lists (dotnet, sqlserver, dotnet-offtopic and
others) has been tirelessly maintained by &lt;a href="http://blog.svoboda.co.nz/"&gt;Lukas
Svoboda&lt;/a&gt; over the past 5 or 6 years, and the not inconsiderable costs of sending
out many thousands of emails a day has been sponsored by him, Microsoft, Irongate,
Orbiz, Intergen and others over the years. Thanks!&lt;br&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=563b52ea-7506-423a-bce8-959bb5099928" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,563b52ea-7506-423a-bce8-959bb5099928.aspx</comments>
      <category>.NET;UserGroup</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=3dd26cc1-59ba-422f-aa59-26a0485ac924</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,3dd26cc1-59ba-422f-aa59-26a0485ac924.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,3dd26cc1-59ba-422f-aa59-26a0485ac924.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3dd26cc1-59ba-422f-aa59-26a0485ac924</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">It's very exciting to start advertising
the NZ.NET Dev Code Camp, which will be happening in Auckland next month -- Sunday
12 August. We're running it the day before TechEd, and using one of the larger TechEd
conference rooms.<br /><br />
Registration, and further details can be found at <a href="http://www.codecamp.net.nz">http://www.codecamp.net.nz</a>,
and more details will be added there as we confirm them.<br /><br />
Tell all your friends!<br /><br />
Kirk<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3dd26cc1-59ba-422f-aa59-26a0485ac924" /></body>
      <title>Dev Code Camp - registrations now open</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,3dd26cc1-59ba-422f-aa59-26a0485ac924.aspx</guid>
      <link>http://pageofwords.com/blog/2007/07/15/DevCodeCampRegistrationsNowOpen.aspx</link>
      <pubDate>Sun, 15 Jul 2007 23:06:07 GMT</pubDate>
      <description>It's very exciting to start advertising the NZ.NET Dev Code Camp, which will be happening in Auckland next month -- Sunday 12 August. We're running it the day before TechEd, and using one of the larger TechEd conference rooms.&lt;br&gt;
&lt;br&gt;
Registration, and further details can be found at &lt;a href="http://www.codecamp.net.nz"&gt;http://www.codecamp.net.nz&lt;/a&gt;,
and more details will be added there as we confirm them.&lt;br&gt;
&lt;br&gt;
Tell all your friends!&lt;br&gt;
&lt;br&gt;
Kirk&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=3dd26cc1-59ba-422f-aa59-26a0485ac924" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,3dd26cc1-59ba-422f-aa59-26a0485ac924.aspx</comments>
      <category>.NET;TechEd</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=e494d792-f99b-44a3-8213-4da8891c9599</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,e494d792-f99b-44a3-8213-4da8891c9599.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,e494d792-f99b-44a3-8213-4da8891c9599.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e494d792-f99b-44a3-8213-4da8891c9599</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://codeclimber.net.nz/">Simone</a> writes
that he's <a href="http://codeclimber.net.nz/archive/2007/07/11/7-months-of-CodeClimber-and-6-months-in-NZ.aspx">leaving
NZ soon</a>. Simone has been a welcome addition to the Wellington geek community and
has contributed to presentations and conversations at the <a href="http://www.dot.net.nz/wellington">.NET
user group</a> and the <a href="http://flanders.co.nz/blog/category/9.aspx">Wellington
geek lunches</a>.<br /><br />
Come back soon Simone, we'll miss you!<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e494d792-f99b-44a3-8213-4da8891c9599" /></body>
      <title>Goodbye Simone!</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,e494d792-f99b-44a3-8213-4da8891c9599.aspx</guid>
      <link>http://pageofwords.com/blog/2007/07/11/GoodbyeSimone.aspx</link>
      <pubDate>Wed, 11 Jul 2007 21:48:30 GMT</pubDate>
      <description>&lt;a href="http://codeclimber.net.nz/"&gt;Simone&lt;/a&gt; writes that he's &lt;a href="http://codeclimber.net.nz/archive/2007/07/11/7-months-of-CodeClimber-and-6-months-in-NZ.aspx"&gt;leaving
NZ soon&lt;/a&gt;. Simone has been a welcome addition to the Wellington geek community and
has contributed to presentations and conversations at the &lt;a href="http://www.dot.net.nz/wellington"&gt;.NET
user group&lt;/a&gt; and the &lt;a href="http://flanders.co.nz/blog/category/9.aspx"&gt;Wellington
geek lunches&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Come back soon Simone, we'll miss you!&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=e494d792-f99b-44a3-8213-4da8891c9599" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,e494d792-f99b-44a3-8213-4da8891c9599.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=a110acd9-71c9-43ff-a528-e7e0043cd189</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,a110acd9-71c9-43ff-a528-e7e0043cd189.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,a110acd9-71c9-43ff-a528-e7e0043cd189.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a110acd9-71c9-43ff-a528-e7e0043cd189</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://ayende.com/Blog/">Ayende</a> briefly
outlines the <a href="http://ayende.com/Blog/archive/2007/07/02/7-Approaches-for-AOP-in-.Net.aspx">7
approaches for interception in .NET</a>, techniques which are used for Aspect Oriented
Programming (AOP), Dependency Injection, and other methods of ensuring that the thing
you write ain't the thing that runs.<br /><br />
This topic is dear to my heart (a little too dear!). My University research went into
different interception techniques in depth, and I surveyed the different techniques
and implemented a few prototypes. My main implementation was a mixture of runtime
and compile-time weaving, as they gave most flexibility in the interception points
that can be attached to. Other approaches typically work by subclassing, limiting
you to interception of virtual member methods only.<br /><br />
The .NET runtime allows a few interesting points of interception, particularly if
you are interested in playing around with the Profiling and Debugging API's. Things
have gotten a little better now that people have written managed wrappers, but back
then, those API's made my head hurt.<br /><br />
One day I plan to go back into that part of my writeup and pull some text into this
blog. I'd also like to fully implement my injection system, especially now that the
library support has improved (Cecil is superior to R.A.I.L.) and the runtime supports
lightweight code-generation.<br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a110acd9-71c9-43ff-a528-e7e0043cd189" /></body>
      <title>AOP / Method interception</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,a110acd9-71c9-43ff-a528-e7e0043cd189.aspx</guid>
      <link>http://pageofwords.com/blog/2007/07/02/AOPMethodInterception.aspx</link>
      <pubDate>Mon, 02 Jul 2007 09:25:45 GMT</pubDate>
      <description>&lt;a href="http://ayende.com/Blog/"&gt;Ayende&lt;/a&gt; briefly outlines the &lt;a href="http://ayende.com/Blog/archive/2007/07/02/7-Approaches-for-AOP-in-.Net.aspx"&gt;7
approaches for interception in .NET&lt;/a&gt;, techniques which are used for Aspect Oriented
Programming (AOP), Dependency Injection, and other methods of ensuring that the thing
you write ain't the thing that runs.&lt;br&gt;
&lt;br&gt;
This topic is dear to my heart (a little too dear!). My University research went into
different interception techniques in depth, and I surveyed the different techniques
and implemented a few prototypes. My main implementation was a mixture of runtime
and compile-time weaving, as they gave most flexibility in the interception points
that can be attached to. Other approaches typically work by subclassing, limiting
you to interception of virtual member methods only.&lt;br&gt;
&lt;br&gt;
The .NET runtime allows a few interesting points of interception, particularly if
you are interested in playing around with the Profiling and Debugging API's. Things
have gotten a little better now that people have written managed wrappers, but back
then, those API's made my head hurt.&lt;br&gt;
&lt;br&gt;
One day I plan to go back into that part of my writeup and pull some text into this
blog. I'd also like to fully implement my injection system, especially now that the
library support has improved (Cecil is superior to R.A.I.L.) and the runtime supports
lightweight code-generation.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=a110acd9-71c9-43ff-a528-e7e0043cd189" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,a110acd9-71c9-43ff-a528-e7e0043cd189.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=f8231717-9e94-495e-a89e-3712f5386d26</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,f8231717-9e94-495e-a89e-3712f5386d26.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,f8231717-9e94-495e-a89e-3712f5386d26.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f8231717-9e94-495e-a89e-3712f5386d26</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm looking forward to presenting with
Philip Cox (Trade Me) at next weeks .NET User Group meeting in Wellington.<br /><br />
The session <a href="http://www.dot.net.nz/Default.aspx?tabid=30">"C# vs VB.NET -
continuing the epic battle"</a> is not really going to be an us-versus-them thing,
but rather a presentation of some of the newer language features side-by-side.<br /><br />
The Wellington group is a pretty C#-focussed bunch, so it will be good for the VB.NET
members to get some respect -- some of the new VB9 features are pretty compelling.<br /><br />
If you want to come along, check out the session details on the <a href="http://www.dot.net.nz/Default.aspx?tabid=30">Wellington
group site</a>, and RSVP to me soon.<br /><br /><p></p><img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=f8231717-9e94-495e-a89e-3712f5386d26" /></body>
      <title>C# vs VB.NET - next week at the Wellington .NET user group</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,f8231717-9e94-495e-a89e-3712f5386d26.aspx</guid>
      <link>http://pageofwords.com/blog/2007/06/27/CVsVBNETNextWeekAtTheWellingtonNETUserGroup.aspx</link>
      <pubDate>Wed, 27 Jun 2007 22:38:32 GMT</pubDate>
      <description>I'm looking forward to presenting with Philip Cox (Trade Me) at next weeks .NET User Group meeting in Wellington.&lt;br&gt;
&lt;br&gt;
The session &lt;a href="http://www.dot.net.nz/Default.aspx?tabid=30"&gt;"C# vs VB.NET -
continuing the epic battle"&lt;/a&gt; is not really going to be an us-versus-them thing,
but rather a presentation of some of the newer language features side-by-side.&lt;br&gt;
&lt;br&gt;
The Wellington group is a pretty C#-focussed bunch, so it will be good for the VB.NET
members to get some respect -- some of the new VB9 features are pretty compelling.&lt;br&gt;
&lt;br&gt;
If you want to come along, check out the session details on the &lt;a href="http://www.dot.net.nz/Default.aspx?tabid=30"&gt;Wellington
group site&lt;/a&gt;, and RSVP to me soon.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=f8231717-9e94-495e-a89e-3712f5386d26" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,f8231717-9e94-495e-a89e-3712f5386d26.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://pageofwords.com/blog/Trackback.aspx?guid=101f0e57-d3d6-491a-9ebc-b6fff6aad6d2</trackback:ping>
      <pingback:server>http://pageofwords.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://pageofwords.com/blog/PermaLink,guid,101f0e57-d3d6-491a-9ebc-b6fff6aad6d2.aspx</pingback:target>
      <dc:creator>Kirk Jackson</dc:creator>
      <wfw:comment>http://pageofwords.com/blog/CommentView,guid,101f0e57-d3d6-491a-9ebc-b6fff6aad6d2.aspx</wfw:comment>
      <wfw:commentRss>http://pageofwords.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=101f0e57-d3d6-491a-9ebc-b6fff6aad6d2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://tirania.org/blog/"> Miguel de Icaza</a> has written a <a href="http://tirania.org/blog/archive/2007/Jun-21.html">progress
report</a> on their Mono port of Silverlight, called <a href="http://www.mono-project.com/Moonlight">Moonlight</a>.
</p>
        <p>
It's a pretty impressive account of what they have accomplished in the first 21 days
of developing Moonlight. It's interesting to see what a team with deep knowledge of
a domain can produce in an intense session of hacking. 
</p>
        <p>
It will be especially interesting to see what core Silverlight features the Mono team
can develop by the time Silverlight 1.1 releases, so we can target our Silverlight
applications to the common denominator.
</p>
        <p>
Also, I wonder which will release first: Silverlight 1.1 or Moonlight 1.1?<br /></p>
        <img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=101f0e57-d3d6-491a-9ebc-b6fff6aad6d2" />
      </body>
      <title>Impressive Moonlight</title>
      <guid isPermaLink="false">http://pageofwords.com/blog/PermaLink,guid,101f0e57-d3d6-491a-9ebc-b6fff6aad6d2.aspx</guid>
      <link>http://pageofwords.com/blog/2007/06/21/ImpressiveMoonlight.aspx</link>
      <pubDate>Thu, 21 Jun 2007 09:51:46 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://tirania.org/blog/"&gt; Miguel de Icaza&lt;/a&gt; has written a &lt;a href="http://tirania.org/blog/archive/2007/Jun-21.html"&gt;progress
report&lt;/a&gt; on their Mono port of Silverlight, called &lt;a href="http://www.mono-project.com/Moonlight"&gt;Moonlight&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
It's a pretty impressive account of what they have accomplished in the first 21 days
of developing Moonlight. It's interesting to see what a team with deep knowledge of
a domain can produce in an intense session of hacking. 
&lt;/p&gt;
&lt;p&gt;
It will be especially interesting to see what core Silverlight features the Mono team
can develop by the time Silverlight 1.1 releases, so we can target our Silverlight
applications to the common denominator.
&lt;/p&gt;
&lt;p&gt;
Also, I wonder which will release first: Silverlight 1.1 or Moonlight 1.1?&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://pageofwords.com/blog/aggbug.ashx?id=101f0e57-d3d6-491a-9ebc-b6fff6aad6d2" /&gt;</description>
      <comments>http://pageofwords.com/blog/CommentView,guid,101f0e57-d3d6-491a-9ebc-b6fff6aad6d2.aspx</comments>
      <category>.NET</category>
    </item>
  </channel>
</rss>