It has been a year since I went all-in on Windows as my daily driver. I had been off this platform for more than 25 years, spending the first 10 of those on Linux and the BSDs, and the latter 15 on macOS alone. This switch is A Big Deal™️—to me at least.
I want to tell you how Windows 10 and 11 feel these days to someone who hadn’t touched this OS for a long time. But, before I can do that, let me tell you my story with Windows. This might be boring so I’ve sprinkled some images to evoke retro feelings.
A blog on operating systems, programming languages, testing, build systems, my own software projects and even personal productivity. Specifics include FreeBSD, Linux, Rust, Bazel and EndBASIC.
My story with Windows starts about 30 years ago (what?! time goes really fast 😱). This was back in 1992 or 1993 when I got my own first computer, a multimedia 386DX PC equipped with MS-DOS 6.22 and Windows 3.11. Those days were glorious: I had just upgraded from my father’s old 8086 so I now had access to a ton of new fancy apps—especially lots of tools to satisfy my curiosity with programming, including Borland Turbo C++ and Visual Basic 3.0.
I was also curious about operating systems and, for some reason—joining the early newsgroups on the Internet surely had something to do with it—I was of the mindset that “Windows sucked” and I had to use something else. So… not even two years later, I upgraded to OS/2 Warp 3 and pretty much abandoned standalone Windows.
The way I did this upgrade to OS/2 Warp 3 was via a weekly publication that provided a booklet with and a few floppy disks to install both the OS and a ton of applications. I’m not sure how my father agreed to buy this for me given that this went on for a full year and it must not have been cheap at all. But the whole thing was incredibly beneficial to my learning of both computers and productivity software, so that was probably why.
I was mostly off of Windows by then, but I still clearly remember the day my father came back from work with a shrink-wrapped copy of Windows 95. With so much fanfare around this launch on TV, I was very curious to see how it looked like. I played with it here and there on my father’s Pentium 60Mhz—and I had no other choice because his PC was our only gateway to the Internet.
That said, I stubbornly stuck with OS/2 for a while, but by late 1997, it was clear that OS/2 wasn’t going anywhere. Thanks to magazines like PC World and PC Actual, as well as the early Internet, I learned about this thing called Linux and I switched to it. I could not afford to pay for OS/2 Warp 4 and Linux was free, so the choice was obvious. The switch, however, was painful, but I was a kid with plenty of free time, the desire to escape the “evil and crappy Windows”, and was captivated by the free software movement—so I put up with it as my only platform. Which was a great decision in hindsight.
So, to summarize my beginnings, I did use Windows 3.11 extensively and 95 to a lesser extent, but then went pretty much Windows-less for years. I ran OS/2 on my 386, did the same on the next machine I had (a Pentium 166Mhz MMX) and then I switched to Linux. Hardware and software support were weak on these alternate OSes, though, so I always kept a dual-boot partition with Windows 95, 98, 2000 and XP—but did so primarily to run a few games.
The dark ages
From about 1997 to 2016, I stayed Windows-less. During this time, I moved through various Linux distributions, then spent a long time on FreeBSD and NetBSD—most of which was fighting the desktop—and then around 2006 I switched full time to Mac OS X. This was back when Intel Macs came out and I convinced myself to buy a high-end MacBook Pro 15" with a Core Duo 2 processor because of its ability to run Windows XP and Mac OS X concurrently via Parallels.
I didn’t particularly want to run Windows, but maybe because of my roots, I had always been curious about it. This is why in 2006 I applied for a GSoC project to develop Boost.Process: a cross-platform library to create and manipulate processes. I knew pretty well how that was going to work on Unix systems, but I wanted to teach myself some Win32. One thing I remember from this exercise is that my skills as a Windows user had deteriorated: I wasn’t comfortable using the system any more and I tended to minimize the time I spent on it. Which was fine because I was still of the mentality that “Windows was a bad OS so why would I care about it”.
During this period, however, the discovery of The Old New Thing (one of my favorite blogs of all times) in 2004 was critical. The author, Raymond Chen, is excellent at explaining why certain things that seem dumb at first actually have a solid reason behind them. By reading his blog, and combining that with my increasing knowledge in software engineering and testing practices, I slowly changed my point of view towards Windows. Yes, the 9x releases were bad stability-wise, but the amount of engineering behind them was staggering, especially around hardware and backwards compatibility, and the internals of NT were a completely different story.
Oh, and by the way, there was nothing “dark” about this time period. Learning about Linux, the BSDs, and macOS has been a great asset in my career so far, and there is a ton of good with all of these systems. I’m just calling this section “The dark ages” because this post is from the perspective of Windows!
Fast-forward to 2014 when I bought an old HP EliteBook 2530p from a friend for real cheap. My goal for that machine was to run FreeBSD on it because I was already about 10 years deep into Mac OS X and needed some fun. However, after playing with that for a few days and realizing how painful the thing was going to be due to poor power management and WiFi support… I kinda gave up. I did run various Linux distributions on that laptop instead, which made the computer usable, but it felt slow.
I mean, that machine was certainly underpowered: the CPU, a Core 2 Duo at 1.86GHz, was out of balance with its 2 GB of RAM and a super-slow hard drive. But, you know, I decided to install the much dreaded Windows 8.1 release on this machine and… I was pleasantly surprised: the laptop ran very smoothly compared to the various Linux distributions I had tried. You know, people always claim that Linux is very efficient, but a full featured desktop environment is not the same as Linux.
This experience, and the fact that I might be one of those few people that like the modern flat UI elements in Windows, made me use the machine more than I imagined just to experience what Windows had to offer. In fact, I updated the machine to the Windows 10 TP builds and I have to confess that I liked what I saw much more than I was able to accept. “macOS was the best”, you know, and I was bought into the Apple ecosystem.
But that laptop was underpowered, my primary personal machine was a Mac Mini—later a Mac Pro 2013, which I still use—and my work laptop was a MacBook Pro… so I was in no position to adopt Windows. I liked what I had seen but I didn’t have a reason to switch and learn more about it.
However, I was growing disenchanted by Apple’s moves. I did not like what they did to the MacBook Pro line after 2015; I did not like them not offering a powerful desktop machine that was not an iMac; I did not like many of the changes that came to macOS and that made developing on (not for) the platform harder. All of these combined made me feel trapped by Apple’s whims without a way out because, despite all of these, I still liked macOS and even worked to support it at Google.
The modern times
And then I bought a Surface Go 2 in the summer of 2020.
The whole Surface line and, in particular, this little Go model, had made me curious from day one. A little tablet running a full-featured OS? Yes please! So I convinced myself that, as soon as I closed on an offer from one of the companies I was interviewing for, I’d treat myself with this machine.
Yes, this computer is quite slow (and was at the time of release), but it’s a great little machine that I can take with me wherever I go. It’s plenty powerful to run VSCode against my Mac Pro 2013 via SSH, and it’s also powerful enough to do some local builds in it. Mind you, EndBASIC’s full-screen code editor was born on this machine while I was relocating and… these are Rust builds we are talking about!
And then I joined Microsoft in October of 2020.
A big part of my reason for choosing a position at Microsoft over the other offers I had was to force myself through Windows and learn about a platform I had neglected for a long time. I wanted to see how a very large service (Azure Storage) runs on Windows in production. I wanted to learn the internals of Windows given my general interest on operating systems. And, as a macOS-only person, I wanted to convince myself that I had a way out of Apple’s walled garden.
The change was not easy at all. When I joined Microsoft, using Windows felt incredibly painful because my muscle memory was completely broken and the command line was… problematic. I had to get used to a whole new environment (company, coworkers, technology, shortcuts…) and the desktop OS was getting in the way. So, to ease the pain, I started using my Mac for work. I interacted with Windows only via VSCode and SSH and a Remote Desktop window that only showed a terminal to let me run builds.
A few months in, however, I had grown annoyed at how slow my Mac was because of all the “corporate security” software I had to install. If I recall correctly, it was CrowdStrike that made the machine crawl because it was scanning files in real time but with a single thread, thus serializing all file system accesses 😒. Plus, by using macOS, I wasn’t really fulfilling my plan to learn Windows.
So about a year ago, I took an old Dell Optiplex 9020 that I had laying around, installed Windows 10, and started using it full-time for work. This little machine got me very far, especially after upgrading it to 16GB of RAM. But as I saw myself using my Mac Pro trashcan less and less, I thought… well, I should just install Windows on it. And so I did. Since then, I’ve barely touched macOS and I’m getting mentally ready to drop macOS from the Mac Pro because I need the extra SSD space for Windows.
But… why Windows?
If you know me at all, you may be wondering: “why the heck Windows and not Linux or FreeBSD, just like you used to run for many years before macOS?”
First, because I want my hardware to “just work”, which isn’t really the case here “thanks to” Boot Camp. Second, because of Adobe Lightroom 😣, which is something else I have yet to escape. And, third, because I cannot stand FUD and Windows is my blind spot, so I must fix that by learning more about it.
Not all hope is lost for me though.
Remember that Dell Optiplex 9020 I mentioned in the previous section? It’s now running FreeBSD 13 and its hardware seems to be fully supported. It can even drive my 4k monitor snappily, and with a slimmed down window manager, it feels incredibly fast. I’ve been tempted to try and use it more and more for daily personal work, just to have some fun again with OS tinkering. And remember the HP EliteBook 2530p I mentioned even earlier? It is also running FreeBSD 13 pretty happily after an SSD and a RAM upgrade and serves as the retro-station for the kids. Oh, and I do have a dedicated file server at home, also running FreeBSD 13 with ZFS.
For now, however, Windows 10 and 11 finally feel pretty good for daily desktop usage.
That’s about it! In the next episode I’ll get to the original goal of reviewing modern Windows as someone who hadn’t touched it for decades. In the meantime, and given that the blog supports comments again, would you share your own story? 👇✍️😀