<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Pilchie's C# and Visual Studio Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/kevinpilchbisson/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:15:03 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Slides from my CodeMash Session</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/slides-from-my-codemash-session</link>
      <pubDate>Mon, 24 Jan 2011 14:56:02 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2011/01/24/slides-from-my-codemash-session/</guid>
      <description><![CDATA[Sorry for the delay.&#160; I took a disconnected vacation for a week after CodeMash.&#160; Now that...]]></description>
      <content:encoded><![CDATA[<p>Sorry for the delay.&#160; I took a disconnected vacation for a week after <a href="https://codemash.org" target="_blank">CodeMash</a>.&#160; Now that I’ve completed my own personal Planes, Trains and Automobiles trip, I wanted to make sure that I posted the slides from my <a href="https://codemash.org/Sessions/Technology/.NET#Future+directions+for+C%23+and+Visual+Basic" target="_blank">CodeMash session</a>.&#160; You can get them <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/31/22/7065.CodeMash-FutureOfCSharpAndVB.pptx" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-31-22/7065.CodeMash_2D00_FutureOfCSharpAndVB.pptx" target="_blank">here</a>. Remember, you can find the async demos that I did inside the <a href="https://msdn.com/vstudio/async" target="_blank">Async CTP</a> for Visual Studio 2010.</p>]]></content:encoded>
    </item>
    <item>
      <title>Seattle CodeCamp 2010.</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/seattle-codecamp-2010</link>
      <pubDate>Sat, 17 Apr 2010 19:56:00 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2010/04/17/seattle-codecamp-2010/</guid>
      <description><![CDATA[Well, it's been about a year since the last time I posted.&#160; It's a little funny that my...]]></description>
      <content:encoded><![CDATA[Well, it's been about a year since the last time I posted.&#160; It's a little funny that my previous post was about how I'm going to speak at Seattle CodeCamp in 2008, and this post is about having just spoken at Seattle CodeCamp 2010.&#160; Anyway, I've mostly been using Twitter to share what I've been working on.&#160; I'm <a href="https://twitter.com/Pilchie" target="_blank" mce_href="https://twitter.com/Pilchie">@Pilchie</a> there.&#160; Anyway, today I presented again on C# IDE Tips and Tricks for Visual Studio 2010.&#160; Some people asked me if I could post the slides, so I've attached them to this post as a way to get them.&#160; I also found out that all the sessions at CodeCamp were recorded, and are available online.&#160; My talk is <a href="https://events.boostweb20.com/Events/SeattleCodeCamp2010/#state=sessionCode%242007-5" target="_blank" mce_href="https://events.boostweb20.com/Events/SeattleCodeCamp2010/#state=sessionCode%242007-5">here.</a>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Components.PostAttachments/00/09/99/79/19/CodeCampTalk-2010.ppt" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-09-99-79-19/CodeCampTalk_2D00_2010.ppt">CodeCampTalk-2010.ppt</a></p>]]></content:encoded>
    </item>
    <item>
      <title>I’m speaking at Seattle Code Camp this weekend.</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/im-speaking-at-seattle-code-camp-this-weekend</link>
      <pubDate>Thu, 13 Nov 2008 21:08:07 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/11/13/im-speaking-at-seattle-code-camp-this-weekend/</guid>
      <description><![CDATA[This Saturday from 2:45-4:00 I’ll be giving a talk on “What’s coming up in VS2010 for C#...]]></description>
      <content:encoded><![CDATA[<p>This Saturday from 2:45-4:00 I’ll be giving a talk on “What’s coming up in VS2010 for C# Developers?”&#160; at <a target="_blank" href="https://seattle.codecamp.us/default.aspx">Seattle Code Camp</a>.&#160; I’ll mostly be showing off some of the new features we’ve been working on for VS2010, especially those related to the C# editor.&#160; I’d love it if you stopped by!</p>]]></content:encoded>
    </item>
    <item>
      <title>Hotfix for VS2008 SP1 Available</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/hotfix-for-vs2008-sp1-available</link>
      <pubDate>Thu, 30 Oct 2008 20:34:35 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/10/30/hotfix-for-vs2008-sp1-available/</guid>
      <description><![CDATA[In VS2008 SP1 our team added a significant new feature: live semantic analysis of open files (or...]]></description>
      <content:encoded><![CDATA[<p>In VS2008 SP1 our team added a significant new feature: live semantic analysis of open files (or “background squiggles” as we called it internally).&#160; Unfortunately, soon after release we found a few small issues with the release.&#160; They are:</p>  <ol>   <li>Incorrect errors when you open a solution with breakpoints in .aspx.cs files. </li>    <li>Incorrect errors regarding conversions of constants in rare cases. </li>    <li>An issue importing metadata from some non-C# assemblies. </li>    <li>Some timing issues where errors would appear and then disappear during typing or file/solution opening. </li> </ol>  <p>We spent some time analyzing the issues, and we’ve come up with a hotfix to address them.&#160; If you’re seeing any issues where you get live semantic errors that you don’t expect, please <a target="_blank" href="https://code.msdn.microsoft.com/kb957259">download</a> this fix and try it out.</p>  <p>Let me know if you find any issues with it!</p>  <p>Thanks!</p>]]></content:encoded>
    </item>
    <item>
      <title>CodeRush Xpress for C#</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/coderush-xpress-for-c</link>
      <pubDate>Tue, 28 Oct 2008 14:13:07 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/10/28/coderush-xpress-for-c/</guid>
      <description><![CDATA[Yesterday at the PDC, Dustin announced the availability of CodeRush Xpress for C#.&#160; This is a...]]></description>
      <content:encoded><![CDATA[<p>Yesterday at the PDC, <a target="_blank" href="https://diditwith.net">Dustin</a> announced the availability of <a target="_blank" href="https://community.devexpress.com/blogs/markmiller/archive/2008/10/27/announcing-coderush-express-for-c.aspx">CodeRush Xpress for C#</a>.&#160; This is a <strong><em>free</em></strong> addin for VS 2008 that provides a whole bunch of fantastic editor productivity features.&#160; <a target="_blank" href="https://devexpress.com/CodeRushX">Download</a> it today and give it a shot!</p>]]></content:encoded>
    </item>
    <item>
      <title>Removing elements from a Dictionary</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/removing-elements-from-a-dictionary</link>
      <pubDate>Mon, 27 Oct 2008 20:42:23 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/10/27/removing-elements-from-a-dictionary/</guid>
      <description><![CDATA[The topic of removing elements from a dictionary came up recently on an internal mailing list.&#160;...]]></description>
      <content:encoded><![CDATA[<p>The topic of removing elements from a dictionary came up recently on an internal mailing list.&#160; Someone was iterating through all the elements of a collection and wanting to remove some of them. The problem with that is that modifying the collection underlying the enumerator throws.&#160; He had the following pseudo code:</p>  <table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>     <tr>       <td valign="top" width="400">         <pre class="code"><span style="color: blue">void </span>RemoveSomeElements(<span style="color: #2b91af">Dictionary</span>&lt;<span style="color: blue">string</span>, <span style="color: blue">int</span>&gt; dict)
{
    <span style="color: blue">foreach </span>(<span style="color: blue">var </span>e <span style="color: blue">in </span>dict)
    {
        <span style="color: blue">if </span>(e.Value &lt; 35)
        {
            <span style="color: green">// Remove e!
        </span>}
    }
}</pre>
      </td>
    </tr>
  </tbody></table>

<p>Several people replied that he could just create a list of elements to be removed and then iterate that afterwards:</p>

<table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>
    <tr>
      <td valign="top" width="400">
        <pre class="code"><span style="color: blue">var </span>keysToRemove = <span style="color: blue">new </span><span style="color: #2b91af">List</span>&lt;<span style="color: blue">string</span>&gt;();
<span style="color: blue">foreach </span>(<span style="color: blue">var </span>e <span style="color: blue">in </span>dict)
{
    <span style="color: blue">if </span>(e.Value &lt; 35)
    {
        keysToRemove.Add(e.Key);
    }
}

<span style="color: blue">foreach </span>(<span style="color: blue">var </span>key <span style="color: blue">in </span>keysToRemove)
{
    dict.Remove(key);
}</pre>
      </td>
    </tr>
  </tbody></table>

<p>That works, but it’s pretty verbose.&#160; Someone suggested a more functional way to do it that’s pretty nice:</p>

<table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>
    <tr>
      <td valign="top" width="400">
        <pre class="code">dict.ToList().Where(pair =&gt; pair.Value &lt; 35).ToList().ForEach(pair =&gt; dict.Remove(pair.Key));</pre>
      </td>
    </tr>
  </tbody></table>

<p>At this point I decided to show off, and make it more efficient by using an “Apply” extension method instead of the .ForEach method that shipped on List&lt;T&gt; in .Net 2.0.&#160; I came up with this:</p>

<table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>
    <tr>
      <td valign="top" width="400">
        <pre class="code">dict.Where(pair =&gt; pair.Value &lt; 35).Apply(pair =&gt; dict.Remove(pair.Key)).Apply();</pre>
      </td>
    </tr>
  </tbody></table>

<p>&#160;</p>

<p>Along with the code to Apply:</p>

<table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>
    <tr>
      <td valign="top" width="400">
        <pre class="code"><span style="color: blue">public static class </span><span style="color: #2b91af">ApplyExtensions
</span>{
    <span style="color: blue">public static </span><span style="color: #2b91af">IEnumerable</span>&lt;T&gt; Apply&lt;T&gt;(<span style="color: blue">this </span><span style="color: #2b91af">IEnumerable</span>&lt;T&gt; source, <span style="color: #2b91af">Action</span>&lt;T&gt; action)
    {
        <span style="color: #2b91af">Argument</span>.NotNull(source, () =&gt; () =&gt; source);
        <span style="color: #2b91af">Argument</span>.NotNull(action, () =&gt; () =&gt; action);
        <span style="color: blue">return </span>ApplyInternal(source, action);
    }

    <span style="color: blue">internal static </span><span style="color: #2b91af">IEnumerable</span>&lt;T&gt; ApplyInternal&lt;T&gt;(<span style="color: #2b91af">IEnumerable</span>&lt;T&gt; source, <span style="color: #2b91af">Action</span>&lt;T&gt; action)
    {
        <span style="color: blue">foreach </span>(<span style="color: blue">var </span>e <span style="color: blue">in </span>source)
        {
            action(e);
            <span style="color: blue">yield return </span>e;
        }
    }

    <span style="color: blue">public static void </span>Apply&lt;T&gt;(<span style="color: blue">this </span><span style="color: #2b91af">IEnumerable</span>&lt;T&gt; source)
    {
        <span style="color: blue">foreach </span>(<span style="color: blue">var </span>e <span style="color: blue">in </span>source)
        {
            <span style="color: green">// do nothing, just make sure the elements are enumerated.
        </span>}
    }

}</pre>
      </td>
    </tr>
  </tbody></table>

<p>Here I thought I was doing right by C# 3.0, and showing people how to use lazily chained iterators.&#160; Unfortunately, this code drops us right back to the original problem!&#160; Because of lazy iteration, we’re actually still iterating the dictionary when we try to remove the elements, and so we invalidate the first iterator in our chain.&#160; </p>

<p>It’s a simple fix, but still a reminder that the semantics of delayed execution can be tricky to reason about sometimes:</p>

<table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>
    <tr>
      <td valign="top" width="400">
        <pre class="code">dict.Where(pair =&gt; pair.Value &lt; 35).ToArray().Apply(pair =&gt; dict.Remove(pair.Key)).Apply();</pre>
      </td>
    </tr>
  </tbody></table>

<p>The “<strong>ToArray”</strong> call finishes the iteration of the dictionary, but uses less space than the original “.ForEach” solution, since we only realize a collection of the elements to be removed, instead of all of the elements in the dictionary.</p>]]></content:encoded>
    </item>
    <item>
      <title>ArgumentNullException and refactoring</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/argumentnullexception-and-refactoring</link>
      <pubDate>Mon, 27 Oct 2008 10:58:51 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/10/27/argumentnullexception-and-refactoring/</guid>
      <description><![CDATA[I hate using strings to represent program elements!&#160; One of the big problems is that it hinders...]]></description>
      <content:encoded><![CDATA[<p>I hate using strings to represent program elements!&#160; One of the big problems is that it hinders automated refactoring.&#160; Strings don’t have any semantic meaning, so refactoring tools don’t know which references to the string need to be updated.</p>  <p>&#160;</p>  <p>While playing with expression trees, a while ago I came up with this:</p>  <table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>     <tr>       <td valign="top" width="400">         <pre class="code"><span style="color: blue">public static class </span><span style="color: #2b91af">Argument
</span>{
    <span style="color: blue">public static void </span>NotNull(<span style="color: blue">object </span>value, <span style="color: #2b91af">Expression</span>&lt;<span style="color: #2b91af">Func</span>&lt;<span style="color: #2b91af">Func</span>&lt;<span style="color: blue">object</span>&gt;&gt;&gt; arg)
    {
        <span style="color: blue">if </span>(value == <span style="color: blue">null</span>)
        {
            <span style="color: blue">var </span>body1 = (<span style="color: #2b91af">Expression</span>&lt;<span style="color: #2b91af">Func</span>&lt;<span style="color: blue">object</span>&gt;&gt;)arg.Body;
            <span style="color: blue">var </span>body2 = (<span style="color: #2b91af">MemberExpression</span>)body1.Body;
            <span style="color: blue">throw new </span><span style="color: #2b91af">ArgumentNullException</span>(body2.Member.Name);
        }

    }
}</pre>
      </td>
    </tr>
  </tbody></table>

<p>&#160;</p>

<p>You can use this for argument validation like this:</p>

<table border="1" cellspacing="0" cellpadding="2" width="400"><tbody>
    <tr>
      <td valign="top" width="400">
        <pre class="code"><span style="color: blue">static void </span>Main(<span style="color: blue">string</span>[] args)
{
    <span style="color: #2b91af">Argument</span>.NotNull(args, () =&gt; () =&gt; args);
}</pre>
      </td>
    </tr>
  </tbody></table>

<p>&#160;</p>

<p>This looks a little strange, but has some interesting properties:</p>

<ol>
  <li>There are no strings, which means that refactoring tools “Just Work” and update all references. </li>

  <li>The majority of the reflection code happens only in the exception code, which means that this has significantly better performance than my first attempt (which took just an “Expression&lt;Func&lt;object&gt;&gt;” </li>
</ol>

<p>On the other hand it has some drawbacks too:</p>

<ol>
  <li>The calling side looks a little strange with “() =&gt; () =&gt;'” </li>

  <li>Using this approach will lead to a LOT of compiler generated display classes to store the parameter references. </li>
</ol>

<p>I’m not sure I would use this in production code, but it was an interesting exercise to come up with a way of validating parameters that doesn’t involve strings.</p>

<p>&#160;</p>

<p>What do you think?</p>]]></content:encoded>
    </item>
    <item>
      <title>Virtualization Update</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/virtualization-update</link>
      <pubDate>Mon, 27 Oct 2008 10:38:08 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/10/27/virtualization-update/</guid>
      <description><![CDATA[Just a quick update.&#160; After my previous post, I actually stopped using virtualization for most...]]></description>
      <content:encoded><![CDATA[<p>Just a quick update.&#160; After my <a href="https://blogs.msdn.com/kevinpilchbisson/archive/2008/08/15/getting-on-the-virtualization-bandwagon.aspx">previous</a> post, I actually stopped using virtualization for most cases, since I found the performance hit to be too significant.&#160; While the automation I mentioned before still doesn’t support HyperV, I hand built a couple of VM’s with it and I have to say that I’m quite impressed.&#160; </p>  <p>On my host machine, it takes about 8 minutes to do a clean build of the code I usually work on.&#160; With my previous virtual machine, it took about 32 minutes!&#160; I think this happened because while my host machine has 4 processors, the VM can only access one of those.&#160; I wasn’t willing to pay that price.&#160; With HyperV today it takes about 9.5 minutes, and I <em>am</em> willing to pay that price for the added flexibility and the time I can save installing builds.</p>]]></content:encoded>
    </item>
    <item>
      <title>Getting on the virtualization bandwagon</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/getting-on-the-virtualization-bandwagon</link>
      <pubDate>Fri, 15 Aug 2008 10:55:46 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/08/15/getting-on-the-virtualization-bandwagon/</guid>
      <description><![CDATA[Lately I've been trying to support work happening in a variety of our development branches, and...]]></description>
      <content:encoded><![CDATA[<p>Lately I've been trying to support work happening in a variety of our development branches, and that's been challenging to the two machine setup I mentioned <a href="https://blogs.msdn.com/kevinpilchbisson/archive/2007/11/24/dodfooding-challenges-part-one.aspx">here</a>.&nbsp; Visual Studio (unfortunately) takes a <strong>long</strong> time to install and uninstall.&nbsp; Also during our development cycle uninstall is sometimes broken.&nbsp; That means that people often re-image (at least) their test machines whenever they need to install a new build of Visual Studio.</p> <p>In order to do work in three different branches somewhat simultaneously, I need to have test machines that have those three different branches installed.&nbsp; It wasn't reasonable to re-image and re-install my single test machine every time I needed to switch branches.&nbsp; It's also not very cost effective for me to have 3 test machines where two of them spend the vast majority of their time idle, not to mention that this doesn't scale well if one day I need a 4th branch.</p> <p>So last week, I jumped on the virtualization bandwagon.&nbsp; I flattened my best machine, installed windows server 2008 64-bit*, and started using virtual machines for my test machines.&nbsp; So far it's been working out very well for me, but I do have to give credit to some other people.&nbsp; A few people in our test group have written some automation around Virtual Server to make life easy for people wanting to use virtual machines.&nbsp; They have some software that manages creating VMs for you.&nbsp; It basically does the following steps:</p> <ol> <li>Pull an image of a selected OS from the network, and cache it locally.</li> <li>Create a VM</li> <li>Install the OS</li> <li>Add it to the corporate network domain</li> <li>Install the latest set of Windows Updates</li> <li>Add my domain account to the Administrators group.</li> <li>Optionally run a custom script to install more software.</li></ol> <p>For step 7, this group has provided stock scripts for installing various versions of Visual Studio, and one to install the latest build from a selected branch.&nbsp; It's really convenient, since steps 2 to 6 only take about 25 minutes (and step 1 is usually skipped because the image is in the usually in your local cache).</p> <p>They also have an option to have the VM be destroyed and re-created every night, which means that you can come in to work in the morning and have a fresh test machine with the latest build on it.</p> <p>So, I started out need to have 3 test machines in 3 different branches, but the system is so easy to use that I've already built up a larger set than that.&nbsp; My current list of virtual machines is:</p> <ol> <li>VS2008 without SP1</li> <li>VS2008 with SP1.</li> <li>A debug build of VS from each of the 3 branches I mentioned above.</li> <li>A release build of VS from the branch I normally work in for performance testing (I don't need absolute numbers, just finding the hotspots).</li></ol> <p>My only wish is that they update it to take advantage of Hyper-V soon to improve performance of the hosted machines.</p> <p>&nbsp;</p> <p>* I previously had Vista 32-bit on the machine because at the time I set it up Server 2008 wasn't released yet, and there was a bug in the interim builds of visual studio that made install fail on 64-bit machines.</p>]]></content:encoded>
    </item>
    <item>
      <title>Where has Kevin been?</title>
      <link>https://docs.microsoft.com/archive/blogs/kevinpilchbisson/where-has-kevin-been</link>
      <pubDate>Thu, 14 Feb 2008 17:55:25 GMT</pubDate>
      <dc:creator><![CDATA[Pilchie (Kevin Pilch-Bisson)]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/kevinpilchbisson/2008/02/14/where-has-kevin-been/</guid>
      <description><![CDATA[I'm still here, I've just been very busy.&#160; We're in the thick of planning out what we'd like to...]]></description>
      <content:encoded><![CDATA[<p>I'm still here, I've just been very busy.&#160; We're in the thick of planning out what we'd like to do for the next version of Visual Studio.&#160; If you have any suggestions, please drop them in the comments section.&#160; I'm <em>most</em> interested in the sorts of features that would be Visual Studio features (as opposed to language features), and the ones that apply while you are actually editing C# code.</p>  <p>Also, I've changed roles a bit.&#160; I'm now the dev lead for the C# IDE team, instead of an individual contributor on the team, so I'm learning what it's like to be a people manager.</p>  <p>I have a few ideas queued up for future blog posts, but I'm definitely interested in your questions too.&#160; What parts of features in the C# editor are you curious about?&#160; What about work at MS and our processes, is that a topic of any interest?</p>]]></content:encoded>
    </item>
  </channel>
</rss>