{"id":203,"date":"2014-08-25T09:10:00","date_gmt":"2014-08-25T09:10:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/dotnet\/2014\/08\/25\/being-an-intern-on-the-net-team\/"},"modified":"2021-09-30T16:13:52","modified_gmt":"2021-09-30T23:13:52","slug":"being-an-intern-on-the-net-team","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/being-an-intern-on-the-net-team\/","title":{"rendered":"Being an intern on the .NET Team"},"content":{"rendered":"<p><span style=\"font-size: 12px\">This summer we had six amazing interns that joined the team to work on .NET. Their projects ranged from internal tools, over shipping components to designing forward looking aspects:<\/span><\/p>\n<ul>\n<li><strong>Shaun Arora<\/strong> (program manager intern): Designing .NET for NuGet<\/li>\n<li><strong>Ian Hays<\/strong> (developer intern): Building a MultiDictionary Collection for .NET<\/li>\n<li><strong>Charles Lowell<\/strong> (developer intern): .NET Portability Analyzer<\/li>\n<li><strong>Santiago Fernandez Madero<\/strong> (developer intern): An LLVM based optimizer for MSIL<\/li>\n<li><strong>Zach Montoya<\/strong> (developer intern): Visual Studio designer for .NET Native<\/li>\n<li><strong>Christian Salgado Pacheco<\/strong> (developer intern): Cataloging .NET APIs<\/li>\n<\/ul>\n<p>If you&#8217;re interested in interning with Microsoft, visit <a href=\"http:\/\/careers.microsoft.com\/careers\/en\/us\/collegehome.aspx\">our recruiting web site<\/a>. Now let&#8217;s dive right in and see what cool stuff they helped us building.<\/p>\n<h2>Shaun Arora: Designing .NET for NuGet<\/h2>\n<p><a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/2013\/10\/16\/nuget-is-a-net-framework-release-vehicle.aspx\">We&#8217;re releasing more and more .NET framework functionality via NuGet<\/a>. Moving forward, we intend to bring the two even closer together. Shaun spend a lot of time thinking about this problem space and helped us shape our thoughs and design some ideas.<\/p>\n<p>Shaun is also a very talented developer and designer and helped us to build a <a href=\"http:\/\/microsoft.github.io\/dotnetfeatures\">catalog of all the .NET features<\/a> we shipped since .NET 4. Check it out!<\/p>\n<p>To learn more about our thinking on the NuGet integration, watch this interview:<\/p>\n<p><a href=\"https:\/\/channel9.msdn.com\/Blogs\/funkyonex\/Fun-with-the-Interns-Shaurya-Arora-on-Designing-NET-for-NuGet\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/01\/12\/34\/0572.ShaunArora.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Ian Hays: Building a MultiDictionary Collection for .NET<\/h2>\n<p>Ian&#8217;s favorite data structure is the dictionary:<\/p>\n<blockquote>\n<p>I love the near constant time operations, the huge number of use cases, the cleanliness! Although the dictionary has a wide variety of uses, there are times when I want to add multiple values per key and Dictionary just doesn&#8217;t quite cut it. In those situations the solution is simple: just build a <code>Dictionary&lt;TKey, List&lt;TValue&gt;&gt;<\/code>!<\/p>\n<\/blockquote>\n<p>If you&#8217;re interested to learn more about the dictionary Ian worked on, take a look the blog posts he wrote over the summer:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/2014\/06\/20\/would-you-like-a-multidictionary.aspx\">Would you like a MultiDictionary?<\/a><\/li>\n<li><a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/2014\/08\/05\/multidictionary-becomes-multivaluedictionary.aspx\">MultiDictionary becomes MultiValueDictionary<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/channel9.msdn.com\/Blogs\/Charles\/Ian-Hays-Building-a-MultiDictionary-Collection-for-NET\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/01\/12\/34\/5355.IanHays.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Charles Lovell: .NET Portability Analyzer<\/h2>\n<p>Charles has been working on a cool Visual Studio extension called the .NET Portability Analyzer. As developers need to target more and more platforms this tool can be a big help in analyzing how portable your .NET code is. It gives you a quick overview of the changes that you would need to make in order to be able to port your code to a given platform.<\/p>\n<p>More information about the .NET Portability Analyzer:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/2014\/08\/06\/leveraging-existing-code-across-net-platforms.aspx\">Leveraging existing code across .NET platforms<\/a><\/li>\n<li><a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=507467&amp;clcid=0x409\">.NET Portability Analyzer: Visual Studio Extension<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/channel9.msdn.com\/Blogs\/funkyonex\/Fun-with-the-Interns-Charles-Lowell-on-the-NET-API-Portability-Analyzer\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/01\/12\/34\/0726.CharlesLovell.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Santiago Fernandez Madero: An LLVM based optimizer for MSIL<\/h2>\n<p>Santiago really likes being close to the metal. So he investigated what it would take to use <a href=\"http:\/\/llvm.org\/\">LLVM<\/a> in the <a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/tags\/dotnetnative\/\">.NET Native<\/a> code generator. <a href=\"http:\/\/llvm.org\/\">LLVM<\/a> is a cross platform, open source collection of modular and reusable compiler and toolchain technologies.<\/p>\n<p>If you like compilers and low level stuff, watch this interview where Beth and Santiago geek out:<\/p>\n<p><a href=\"https:\/\/channel9.msdn.com\/Blogs\/funkyonex\/Fun-with-the-Interns-Santiago-Fernandez-on-LLVM-Based-Optimizer-for-MSIL\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/01\/12\/34\/7180.SantiagoFernandezMadero.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Zach Montoya: Visual Studio designer for .NET Native<\/h2>\n<p>Speaking about <a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/tags\/dotnetnative\/\">.NET Native<\/a>: how does .NET Native do dynamic things when it&#8217;s compiling your code statically? The answer is something called <a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/2014\/05\/20\/net-native-deep-dive-dynamic-features-in-static-code.aspx\">Runtime Directives<\/a>. Runtime directives are basically additional information provided to the .NET Native tool chain that tell the compiler what APIs you intend to call dynamically.<\/p>\n<p>Zach built a Visual Studio extension that allows maintaining and configuring the <a href=\"http:\/\/blogs.msdn.com\/b\/dotnet\/archive\/2014\/05\/20\/net-native-deep-dive-dynamic-features-in-static-code.aspx\">runtime directives<\/a> right from Visual Studio. Check out the interview to learn more about this extension (and on how Beth can tell developers and program managers apart).<\/p>\n<p><a href=\"https:\/\/channel9.msdn.com\/Blogs\/funkyonex\/Fun-with-the-Interns-Zach-Montoya-Builds-a-Visual-Studio-Designer-for-NET-Native\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/01\/12\/34\/8322.ZachMontoya.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n<h2>Christian Salgado Pacheco: Cataloging .NET APIs<\/h2>\n<p>Keeping track of all the .NET APIs across all the platforms can be challenging. At Microsoft, we often build internal engineering tools to make our lives easier. Christian worked on a tool that enables us to catalog the APIs and record comments and design notes.<\/p>\n<p><a href=\"https:\/\/channel9.msdn.com\/Blogs\/funkyonex\/Fun-with-the-Interns-Christian-Salgado-Catalogs-NET-APIs\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/00\/00\/01\/12\/34\/6685.ChristianSalgadoPacheco.png\" alt=\"\" border=\"0\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This summer we had six amazing interns that joined the team to work on .NET. Their projects ranged from internal tools, over shipping components to designing forward looking aspects: Shaun Arora (program manager intern): Designing .NET for NuGet Ian Hays (developer intern): Building a MultiDictionary Collection for .NET Charles Lowell (developer intern): .NET Portability Analyzer [&hellip;]<\/p>\n","protected":false},"author":335,"featured_media":58792,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685],"tags":[30,51],"class_list":["post-203","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","tag-announcement","tag-community"],"acf":[],"blog_post_summary":"<p>This summer we had six amazing interns that joined the team to work on .NET. Their projects ranged from internal tools, over shipping components to designing forward looking aspects: Shaun Arora (program manager intern): Designing .NET for NuGet Ian Hays (developer intern): Building a MultiDictionary Collection for .NET Charles Lowell (developer intern): .NET Portability Analyzer [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/335"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=203"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/203\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/58792"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}