When was the last time you had to debug an IRQ conflict? I remember when "Plug and Play" was derisively nicknamed "Plug and Pray". Today, it all just works. When I'm assembling a computer, I don't have to set jumpers. I don't have to fiddle with making sure the boot drive is at the end of the IDE cable rather than the middle. I can just snap all the pieces together like Lego, hit the power button, and be assured that I'll get a bootable system (assuming, of course, that I haven't been a dolt and forgotten to plug the video card power cable in).

When was the last time you had an application blue-screen/bugcheck/kernel panic your machine? Yes, Windows still blue-screens from time to time, but over the past decade, I've found that 100% of my blue-screens have been caused by faulty drivers, rather than application code or bugs in the OS itself. This wasn't always the case. I remember, on Windows 98, there was one particular game that my brother had (I think it was Reader Rabbit), which would repeatedly and reliably blue-screen the machine when we got to a certain level. I haven't seen any errors like that in more than decade. And even the driver blue-screens are getting better. I remember not too long ago, my Windows PC's monitor blinked off, then came back. When I looked in Event Viewer, I saw that the GPU driver had crashed and had been automatically restarted. This is something that still causes kernel panics on Linux and MacOS, but Windows just shrugs it off and keeps on chugging.

With regards to Linux, when was the last time you had to mess with xorg.conf? Wifi drivers? WPA supplicant? I remember when I had to download the Windows drivers for my wireless card, extract the binary blobs, compile NDISWrapper, and then pray that I'd set everything up correctly, before unplugging the Ethernet cable to test whether my wifi was working. Now? I browse Hacker News while Linux is installing, because wifi drivers have been part of the kernel for years.

As for programming tools, they're more stable, robust, and widely available than ever. When was the last time you had to pay for a compiler, interpreter or language runtime? When was the last time GCC or LLVM crashed? Today one can write code in C, C++, Java, Python, Go, Rust, and a plethora of other languages... all for free, even on Windows! This is a huge improvement from the bad old days when your choices were to either pay for Borland or pay for Visual Studio. And as for web programming, do you really pine for the days when your only option for a backend language was a collection of perl scripts in `cgi-bin`?

The one regression, in my opinion, is with communication software. We used to have open (or "open-enough" i.e. reverse engineered) protocols that enabled multi-protocol, multi-platform clients such as Pidgin. That world is gone. Our communications are now siloed into proprietary, hostile software stacks, such as Slack, Google Meet and Teams. And our personal communications are siloed between Discord, WhatsApp, and the multifarious other messenger apps that we have to install in order to communicate with that one person who refuses to use anything else.

But other than comms, has software improved? I have a hard time arguing otherwise.