Essays on software development with a focus on quality and production engineering. Mostly.
We have reached the end of this daily 2-week long series so it’s time to close with some parting thoughts. Before drafting some conclusions on how this whole year has gone, there is just one more topic I have to touch on… and that’s the much dreaded telemetry.
As you are well-aware, Windows is a closed-source operating system. That, however, does not mean that it is opaque. In fact, it feels quite the opposite in many areas, which might be a surprise to you—especially if you develop on/for open-source operating systems.
I briefly mentioned in the intro to this series that, as part of the transition to Windows, I recently built my most powerful home server ever. The server in question is a machine from 2011 so it’s not “powerful”, but it’s the best I have ever had as a home server! And it is running FreeBSD 13. Wait, wait, wait. What does this have to do with Windows?
The native Windows command line, the one derived from DOS, is objectively painful. On the one hand, the batch language is full of hacks that have cropped up over the years. These hacks exist to offer new features while maintaining strict backwards compatibility, a heroic effort with nasty consequences. On the other hand, the interactive editing features of cmd.exe are rudimentary1. Fortunately, PowerShell exists as a first-party, built-into-Windows alternative to cmd.exe.
We are finally entering the final part of this one-year retrospective by shifting gears into developer-oriented topics. I hadn’t touched Windows to write code since 2006 and the development experience has massively changed for the better during the last 6 years. So let’s start this part by talking about the crown jewel of development on modern Windows: the WSL + Windows Terminal + VSCode trifecta.
The previous episode in this series was about PowerToys: a nice collection of first-party tools to extend the functionality of Windows for power users. But what about functionality that’s built into the system? There are a few more areas I wanted to touch on before concluding the GUI part of these series, so let’s dive in.