← Back to context

Comment by mlnj

2 months ago

At this point, I've given up having hope for Windows to be actually a good experience for anything at all.

Development has been a pain over the last decade. MacOS has it's rough-edges, but it has become a pleasure to code on.

Normal everyday experience is just a pain with unintuitive settings pages, slow Files Explorer, and a horrendous start panel experience.

Gaming seems to be the last thread my Windows machine is around for anymore. Although I have not tried moving to Linux for this, the gaming community seems to be happy enough for more and more games every week.

> MacOS has it's rough-edges, but it has become a pleasure to code on

Except when Apple deprecates APIs but the replacement doesn't have close to the same functionality (looking at you screen capture kit).

Or when the documentation just doesn't explain anything and you have to reverse engineer the API to figure out what it does.

or how there's a bunch of hidden APIs only certain vendors are told about so you can't even compete on an even playing field.

And don't get me started on the C, C++, ObjectiveC and now Swift monstrosities. Having fun with your legacy project when the new APIs require swift, so you have to use the objectiveC bridge and the weird bugs that comes with it.

  • Also Apple undercutting your business by turning your app in an OS feature.

    Or Apple deleting your app and account because of politics but they claim it's a policy violation. They just selectively enforce it.

    Or apple allowing foreign governments back doors.

  • GP said that macOS is a pleasure to code on, you’re arguing that it is not a pleasure to code for. Both can be true at the same time!

I genuinely enjoy programming on windows. Perhaps because I don’t try to force windows to be linux, but PowerShell is genuinely good.

The only issues I face are when other developers do non-cross platform things. Like use bash for build scripts.

  • Anything touching disk, such as reading a bunch of source files is just so much slower on windows right now. From what I hear it improves a little if you actually go through the Linux subsystem, but it just can’t touch native Linux performance.

    Just switching OS will seriously improve your DX because of the faster compiles.

> MacOS has it's rough-edges, but it has become a pleasure to code on.

I don’t know what kind of projects are you working on, but it couldn’t be further from truth for me. WSL2 is so much better than docker on macOS it isn’t even funny. (Haven’t tried orbstack, heard good things; though fundamentally the problem of developing for linux on not-Linux can only be solved by actually running Linux.)

  • > (Haven’t tried orbstack, heard good things; though fundamentally the problem of developing for linux on not-Linux can only be solved by actually running Linux.)

    I really wish we could get back to true platform-agnostic development and away from shipping whole Linux-jungles containing the banana you actually want to ship. Effective hard-coupling isn’t a good thing isn’t my opinion, even when the platform being coupled to is FOSS.

    • Agreed. Instead of solving "It runs on my machine" we just decided to ship the machine as part of the app and call it a day.

  • Even without WSL, PowerShell is perfectly capable. I find that lots of people just rag about windows because it’s not unix and they’re trying to force it to be.

  • Docker on macOS also runs a Linux VM under the hood, just like WSL2 does, they're no different in that respect. WSL1 used the more exotic approach of translating Linux system calls to and from NT kernel system calls, but for various reasons (compatibility, performance, complexity) Microsoft abandoned that technique and adopted a Linux VM running under the Hyper-V hypervisor for WSL2.

    • There is a difference in Hyper-V itself. The Windows hypervisor is underappreciated as one of the better VM hypervisors in some scenarios, and WSL2 uses a few Hyper-V tricks [0] to really shine if your machine's Hyper-V isn't interfered with by other hypervisors. (Sadly not uncommon given how many us have things like old VirtualBox VMs that still need Hyper-V to run in a compatibility mode with Oracle-maintained hypervisors of the past.)

      (Also, WSL1 isn't as actively maintained as it was when WSA [Windows Subsystem for Android] was an active Windows 11 feature driving it, but it hasn't been entirely abandoned either and there is some community support ongoing [open source PRs].)

      [0] Among other things, Windows likes to run itself at all times as a guest in Hyper-V when Hyper-V is active (and other ancient hypervisors aren't interfering), making Hyper-V VMs like WSL2 "peers" with Windows itself for Hyper-V resources/attention. (It's one of the funnier things about Hyper-V being a "Pro" feature still today because even consumer-focused Windows Home is often still running in Hyper-V [because it's also sometimes a defense-in-depth security/sandboxing in some consumer use cases], it just won't let you configure other VMs in it than your main Windows OS.)

      2 replies →

  • My experience w/ WSL2 and Docker Desktop has been roughly equivalent: both a little fussy, but work just fine. What was it about either one that led you to such a strong preference?

    • Orbstack on MacOS

      Had to onboard a Windows user the other day and the Docker performance seems to be even worse than I remember the last time I built on Windows.

      Orbstack really makes working with Containers a almost-native experience.