A few days ago Scott Hanselman posted an interesting question on Bluesky. He asked how much stuff people needed to add to Windows to make it useful for day to day work. He also asked a similar question of Mac users.
Admittedly, my use case differs from that of most people. I do embedded firmware development. For me, my company Windows laptop mostly acts as a way to connect with the Linux build machines and target machines I use. It's really little more than a glorified terminal except for running Outlook, Office, and Slack.
Windows
Having made the switch to a Mac at home 24 years ago, I only use Windows at work now. On any new Windows machine, I first install the following software. It's all free software as most companies I've worked for make it so difficult to justify the purchase of commercial software, that it's not worth the effort.
- Gvim - I occasionally need to do some local editing on Windows and for that a graphical version of vi is an absolute necessity for me. I've been using some version of vi for 35+ years and while I've had occasionally dalliances with other programming editors, I've always returned to vi.
- VcXsrv - Being able to launch graphical applications remotely makes my life much easier. That means using an X11 server. I know there's pressure to move to Wayland but it strikes me as more effort than it's worth at this point. It's the same feeling I have when I hear someone suggest that I try writing a device driver in Rust. I just want to get work done, not spend time blazing a trail.
- Putty - I need to connect via SSH or serial communications to a number of Linux machines (build servers, target systems, etc) and Putty is my hands down favorite way of accomplishing this. I make sure to enable X11 forwarding on Putty SSH sessions because this allows me to launch GUI programs and have them display on my Windows laptop.
- WinSCP - This allows me to easily copy files back and forth between Linux machines and my Windows laptop. It also enables easy remote editing of files which reduces the pain of editing a file on a remote machine over a slow Internet link.
Mac
When I first started using a Mac at home, I loved the development environment which the combination of Mac OS X, Xcode, and the Quartz X11 server provided. It was the best development platform I had seen since my days last using a Sun workstation in 1996. Over time and Apple's push to combine features of iOS and Mac OS, it's become much harder for me to set up a reasonable development environment on the Intel Mac Mini which serves as my desktop machine at home these days. Since most of my embedded development is done for work, that's not a deal breaker.
- MacVim - As mentioned above in the Gvim section, I need to edit files locally on my Mac. MacVim gives me a version tailored for use on Macs.
- Homebrew - Unfortunately, many of the tools I've come to rely upon are only available through an alternate install path. Homebrew gives me access to a number of development tools not available through the Mac AppStore.
- XQuartz - This X11 server used to be available in the Xcode tools but now the best version seems to require being installed via Homebrew.
- Unfortunately I have not found a free GUI SCP application for Mac I like yet so I resort to using the standard Mac Terminal app and the command line scp tool.
Linux
I use a Raspberry Pi 5 at home since Linux is orders of magnitude better at interfacing with a variety of small embedded machines than either Windows or Mac are. I typically use a pared down Linux distribution because I don't need the typical blend of applications like Open Office. I've been using Debian Bookwork with the Xfce desktop environment.
It's easy to install X11 apps, Gvim, and Putty on Linux. The IT group at work has our Windows laptops very locked down so installing new software such as the GUI software for a USB protocol analyzer sometimes requires getting it approved which can take a few days. Mac has gotten harder to run third party application software as well, much like the iOS app store which is very locked down. Development goes so much faster when I can install any software I need without facing roadblocks.
Linux is also good at doing compiles for the firmware and application software I create for the newest embedded ARM device at work which is also an ARM 64-bit processor. It has better USB support too. Windows often requires the installation of device drivers for various USB serial devices which can be hard to do when using a laptop with limited admin rights.