windows setup
I use Windows for light development, gaming and working on the occasional dotnet application. I have used Windows since 3.1.
For a more comprehensive overview of the software I use, check out my mac setup, in this post I'll focus on Windows-specific tooling only.
Managing Software
brew is available for mac (and Linux) and to get the equivalent experience on Windows, there are three options:
-
chocolatey, which has the benefit of having most of the open source packages available.
-
scoop, which doesn't trigger User Account Control (UAC) and avoids PATH problems.
-
winget, which is the cli for the Windows Package Manager.
Windows update service supports Microsoft software - in addition to the normal security and device driver updates, and then there is the Micrsoft Store, which can also update software.
Across all the options, I use a combination of choco
& winget
to manage installing and updating software.
Windows Subsystem for Linux (WSL)
I started using this back when the beta, called "Bash on Ubuntu on Windows" was released. It still was in its infancy but the potential was there, so I immediately jumped on it.
The initial (public) release was called WSL and relied on a compatibility later allowing Linux syscalls to be translated and executed by the NT kernel. However the performance was an issue and eventually, Microsoft pivoted WSL to use a customized Linux kernel running on top of Hyper-V and called this WSL2. They quickly added support for running GPU-accelerated workloads followed by support for Linux GUI applications.
In November 2022 WSL reached 1.0
Today, vscode & intellij (and other IDEs) support using WSL as a backend. You can install libraries, manage runtimes, and execute applications on a Linux environment while utiilzing Windows for the editor experience. You can run Windows commands from WSL, and access the WSL file system in Windows Explorer.
In short, a fully-fledged Linux desktop and server environment, with a choice of Linux distributions running on Windows, without having to dual boot the machine.
Start with the comprehensive documentation and follow the commandline blog to find out what is in the pipeline.
Command Line Experience
One of the most exciting developments for me on Windows was the introduction of the new Windows Terminal back at Build 2019. It was as if Microsoft finally heard the complaints of developers like myself, longing for a better cli.
Like most things on Windows, this is a very tough ask to change something that's so fundamental to the operating system - and an operating system that has perhaps the longest backwards-compatibility burden of any mainstream OS. To this day, you can run binaries from Windows 95 and beyond on the latest version of Windows. I don't know of many mainstream operating systems with that kind of compatibility promise.
I immediately starting following its development and got on the beta as soon as I could.
The team behind it Kayla Cinnamon (now handling PowerToys, of which I am also a fan), Rich Turner (since retired from Microsoft) & Craig Loewen did a great job keeping developers engaged with frequent updates. It also helped that the project was opensource and you could browse the github repo and be part of the development process.
The new terminal has come a long way since the early days. It now has:
- the ability to set it as the default terminal application.
- support for emojis, gifs, the mouse & font ligatures
- a brand new font
- comprehensive settings & a GUI to manage them
- a command palette
- multiple panes
- a chat feature which integrates AI (currently in the canary build)
To install the Windows Terminal:
- the preferred option, which gives automatic updates: Microsoft Store
- Releases are also available at github
- with winget:
winget install --id Microsoft.WindowsTerminal -e
- with choco:
choco install microsoft-windows-terminal
- with scoop:
scoop bucket add extras && scoop install windows-terminal
Text Editor
If you were expecting me to type vscode here, you will be disappointed - not that there is anything wrong with vscode, it is the preferred option for many software stacks and the plugin marketplace is rich with amazing first-party plugins from every vendor and technology stack, including real unique gems like gitlens.
In Windows-land though, the one text editor to beat is Notepad++. It is a free & open source editor that does so many things so well its something that I miss on other operating systems. You need to have it installed.
General Tooling
I replicate my mac setup on Linux via WSL on Windows. This helps me avoid too much context switching. However, there are some programs that are unique to Windows that I really enjoy:
-
paint.net - the most capable free image editing software I have ever used. I long for the day this is available on the mac.
-
the powertoys collection has a lot of quality of life tools that I rely on daily. FancyZones, PowerToys Run, Paste as Plain Text & Mouse Utilities are the ones most used.