Microsoft (ASP.NET Team), Senior Software Engineer
June 2016 - Present
Since June, I’ve been focused on .NET Core, a free cross-platform open-source developer platform from Microsoft. I have a long history with .NET and I’ve always hoped it could grow into a truely open-source platform. I’m proud to have had an impact on that process.
I led the team building a brand new version of the powerful SignalR framework for real-time web applications. This project was a rewrite from the ground up using .NET Core. The product has been used in production applications and also powers the Azure SignalR Service, a server-less solution for real-time web applications. In addition to building new shiny things, I also dug deep into the legacy code base (a completely different beast) and released several maintenance releases as well as a release adding some new functionality. I enjoy the challenge of diving in to an unknown system and solving problems! SignalR has multiple client libraries and I’ve worked in TypeScript, Java and C++ to help deliver these client experiences, as well as the core .NET server/client code.
Along the way, I also contributed to various other parts of the ASP.NET Core platform, and had a broad impact on .NET Core as a whole. Recently, I’ve been working in a virtual team to dramatically improve the diagnostics story for .NET Core, allowing customers to get more insight into performance and scalability problems in their applications.
Microsoft (NUGET Team), Software Engineer II
September 2012 - June 2016
NuGet is the package manager used by all .NET applications, and NuGet.org is the central repository for packages, hosting over 100,000 unique packages and over 16 billion package downloads. As an engineer on the NuGet team, I helped develop, maintain and operate this service as well as the command-line client and Visual Studio functionality. From the start, by necessity, NuGet was a “DevOps” system since we were a small team and didn’t have capacity for a separate operations team. As NuGet grew, we discovered operations challenges that required technical improvements as well as new processes. NuGet is now central to the .NET platform and being able to have such a broad impact was a thrilling experience for me.
Microsoft (ASp.NET Team), Software Engineer
October 2009 - September 2012
The “Razor” templating language for ASP.NET, released in 2010, was a major change in server-side rendering for ASP.NET applications. As an engineer on the ASP.NET team I built the core parser and runtime engine for this templating language. Razor is unlike many templating languages in that it seemlessly blends commands and output together rather than using chunky delimiters to separate content from instructions. At the time, this was a novel new approach, and since then it has become much more common (as seen in languages like JSX and the React framework). I enjoy solving these kinds of deep technical challenges. Building a parser for a language that was effectively a blend of two languages (C# and HTML) was an interesting challenge. This was a real opportunity to have a major impact on the entire ASP.NET ecosystem. Now, Razor is the dominant syntax for server-side rendering in ASP.NET applications and I’m proud of the part I had in that.
Microsoft (ASP.NET Team), SOFTWARE ENGINEER INTERN
May 2008 - August 2008
AJAX and MVC were all the range in 2008! As an Intern on the ASP.NET Team, I built a series of AJAX “helpers” for ASP.NET MVC applications that made it easy to integrate AJAX functionality into existing and new MVC-based applications.
Microsoft (Visual STUDIO Team), SOFTWARE ENGINEER INTERN
May 2007 - July 2007
Microsoft Visual Studio Team Edition for Database Professionals, in addition to being one of the longest product names ever, was a powerful version of Visual Studio designed for Database Developers. I helped build a prototype formatting engine that would take T-SQL (the SQL dialect used by Microsoft SQL Server) Scripts and format them according to the developers configured preferences. Authors of SQL scripts often like to align constructs vertically, which is a formatting challenge not usually found in programming language formatters, which made this a very interesting experience. I designed a two-pass formatter that allowed script authors to maintain the formatting they were used to having in manually-formatted scripts without the tedious job of inserting spaces to align constructs.