Catching Up with Microsoft

Recently, I’ve gotten back in touch with .Net in the form of .Net Core. I’ve been shaking off some the coding rust and building some tools to help with data handling related to the Foresight data service at Spatial Networks. It’s been fun to get my hands dirty again and also interesting to see how .Net has evolved over the past few years.

It’s been a few years since I’ve done a lot with .Net and, after spending some time in the Node ecosystem, this was my first foray into .Net Core. The application I was working on just wasn’t coming together correctly in Node, so I started prototyping out the logic flow in .Net Core, with the intent to port it back to Node when I had a good reference implementation. The more I kept using .Net, the more impressed I got, so I just kept the application there.

I was able to do the development on my Mac, do a test deployment on my Ubuntu machine, and, working with our devops lead, get the production app deployed in an Alpine-based container. The whole process was fairly smooth and enjoyable.

It’s been exciting to watch the evolution at Microsoft under the leadership of Satya Nadella. Its move toward more open platforms, a consequence of its embrace of Azure as a primary revenue source, is something that simply didn’t seem likely under the previous regime, which seemed stuck in an antiquated view of computing.

There was a flurry of activity yesterday, with the opening of the Build conference, and a few thing caught my eye. I’ll take them in the order they showed up in my tweet stream.

The first was regarding the announcement of .Net 5, which will be a unified .Net platform that can be used to develop applications that target a variety of operating systems and devices. .Net 5 is scheduled for release in 2020 and should close all of the remaining gaps between the various current flavors of the .Net framework. Given my recent experience with .Net Core, I’m looking forward to having a single framework that works in the multiverse that is modern technical infrastructure. (Yes, I have heard of Java.)

The second was the announcement of the general availability of IntelliCode, the successor to IntelliSense. To be honest, IntelliSense has been one of those things that has kept me coming back to Microsoft tools. Modern software frameworks, as well as the user-developed object models on top of them, have become too complex for memorization or for working through documentation, so auto-completion is a must-have. Microsoft has always seemed to to this better, with similar tools in other environments feeling clunky, slow, or inexact. IntelliCode seeks to improve on it and also shows the benefit of having a platform like Github in the portfolio. This is the kind of thing Github probably couldn’t have pulled off on its own, nor is it something Microsoft would have attempted if it meant embedding a dependency on an external platform into its core developer tools.

Lastly, there was the announcement of Windows Subsystem for Linux (WSL) 2. With this version, Microsoft is shipping a full Linux kernel with Windows. I don’t do a lot with Windows anymore, which is precisely why I’m excited about this announcement. With the availability of full system call compatibility, it means those infrequent times I need to use Windows and open a command prompt will be just a little bit less painful. I jump pretty seamlessly between Mac and Linux now, so it will be nice to have Windows be a little bit easier. I’m not expecting completely smooth sailing, but it would be nice if there were less chop in the water.