1. 42
  1. 19

    I’ve recently started a fantastic new job – the only wrinkle was that it came with a Windows 10 laptop.

    Honestly I think I would probably pass on a job if it involved being forced to use Windows (at the exclusion of all else). I don’t dictate the tools a plumber uses when I employ them and as a technologist my computer and the tools upon it are my professional tools so I expect to be able to use them.

    1. 5

      If something like that is forced that would be a red flag for me too. But most of the time they’re just not that familiar with Linux. My current job was the third in a row where I casually asked about it in the interviews and each time the response was: Well, we don’t know Linux, but you can be the first if you want. Just be aware that you must install it yourself and we cannot help you if something doesn’t work.

      Always worked out fine.

      1. 1

        It’s not just unfamiliar with linux. It’s that they aren’t allowed to use anything else, to work with clients or partners. I’m guessing a lot of that we have to thank Microsoft for, but e.g. you can’t work on projects for a lot of German car manufacturers if you’re on Linux (or Mac for that matter), because you can’t run the mandated security, audit and other tools, or at least ensure of the same. Yes, I know you can, at least to the same manner that you do with windows, but you just don’t have a licence to do that. So we all run windows :(

      2. 3

        That’s fair, for a consultant or someone who works alone like a plumber. Not quite applicable for a company who employs dozens or hundreds of devs. There is benefit to standardizing the tooling.

        However, I agree I don’t like Windows and would hate to work in it all day every day 😬

        1. 3

          Exactly, a multitude of OSes adds friction.

          I’d like to provide CLIs to all devs in my small company and it’s a lot of pain. Mac OS Arm/i86, Linux, Windows.

          Windows is hardest to support, mostly because every dev seems to use a different shell and symlinks behave differently depending on…

      3. 18

        I am a software & web developer - and Linux is a toolbox, full of highly polished tools, crafted over decades by software developers, for software developers. Windows is…​ not that. It’s a commercial OS, aimed at users of Word, Excel & Outlook, pretty much. You can feel this difference all the time that you’re using it - it pervades everything.

        I think this kind of encapsulates the reason I stopped caring so much about operating systems. Someone whose work life revolves around documents, spreadsheets, and presentations sees Windows the same way a developer sees Linux or BSD: a familiar toolbox full of the things that they need to get a job done.

        1. 9

          This is partly why I started a Operating System comparison spreadsheet more around workflows: https://docs.google.com/spreadsheets/d/148zTJUwfVv9xfDcpSoH3mF-c4vqV3CqyEWXuqaAiXoA/edit?usp=sharing

          There’s a number of philosophical reasons why one may opt towards a certain OS or hardware, but feel for many knowing there’s some guidance around what workflows can be met (or not) by a given setup to decide whether to make a switch (or wait, or try things out, or stay with what works) makes a difference.

          Dream is to someday see someone make a website/wiki of sortof like this spreadsheet. Aware of existing sites like alternative.to but those are app-centric whereas workflows are sometimes provided by the OS itself and/or combinations of tools.

          1. 2

            Nice! I love the idea of being able to search for specific workflows to see what is available in the different operating systems.

        2. 11

          Ever since the introduction of Metro with Windows 8 it really has been very chaotic. It is somehow less organized and consistent than the average Linux desktop, and that’s saying something.

          1. 6

            I totally agree. But I feel like that chaos started with aero (first appeared ca. 2005-6 in Vista preview releases) and the Office 2007 Ribbon. Prior to that point, you basically got the platform look and feel just for using win32 controls in your application. After that, you had to opt in via manifest and maybe use a different API, and in some cases (e.g. the ribbon) the “different API” was Office-only for a while. It feels like that period was where the fragmentation and inconsistency really set in. Though it wouldn’t surprise me to learn that there was a little of it in XP when they first started encouraging people to use their .Net stuff.

            1. 4

              I think you’re seeing things through a nostalgic filter. Even as far back as Windows 3.11, there were popular third-party toolkits that provided different default widget sets. A load of applications had big buttons with icons in them, for example, when the default look had smaller buttons without icons. The common controls library was very limited and so everyone added their own. The Office team largely maintained their own set of controls and didn’t want them put into Windows because it would make it easier for competitors to write an Office-equivalent, which led to most Windows apps that needed to edit (or even render) rich text shipping a control that wasn’t the largely-useless one that Windows shipped.

              Windows UIs have never been consistent. They’re not even consistent on button order within the same application, which is largely a fault of the APIs. With OpenStep, for example, the simple dialog API exposes the buttons via semantic meanings (default action, alternative action, cancel), which means that everything consistently shows cancel on the far left and has to put informative strings on the buttons. Win32 encourages you to draw the dialogs yourself and store them as resources and makes it easy to pop up things with ‘yes’ and ‘no’ buttons.

            2. 10

              Every OS sucks in their own ways, but I try to be aware of them all and know how to effectively use them on their own terms. If you stop narrowing your vision, you can even appreciate them for what they are instead of trying to make them what they aren’t.

              Speaking as someone with a MacBook, then Fedora and Windows 10 on the desktop.

              1. 4

                Agreed. I moved away from Linux for my daily productivity and development in the early 2010s because I was too likely to attempt to tweak things or would end up breaking things. Also, software suspend and hibernate never really worked correctly for me on basically any Linux installation with any bistro. That it just worked in macos was practically a killer feature for me at the time.

                1. 2

                  I guess I got lucky that I never had personal laptops while I was still into tinkering with Linux (early 2000s). By the time I finished experimenting with every little thing, things stabilised on the desktop and I never felt the need to go much beyond what Gnome or KDE or Unity had to offer. My tweaks are for a long time mostly in my dotfiles. Also, by the time I actually wanted a laptop instead of a box under my desk, all the things, like hibernate, have been figured out. So I guess I lucked out and avoided most of the issues with ndiswrapper and stuff. And while I did my own kernel module compilations, and X config files for a while, at that point in time I wanted to break them, put them back together and learn.

                  1. 1

                    I’ve sunk a ton of time in my dotfiles, and much of that was on a Mac.

              2. 9

                I’ve been using Windows as my primary work machine for the past two years. The last time before this that I ran Windows as a primary desktop OS was Windows 98. The experience has left me ready to go an equally long time again before running it as my primary desktop OS.

                The weird part is that I actually like the design of Win32, Windows event log, and the like. Windows added proper server lifecycle well before Linux finally got systemd. The event log doesn’t suffer the race condition of journald about being unable to get the metadata for the last few lines of a process’s output if it were printed right before it existed and thus those lines aren’t associated with the correct unit. The decision to make processes heavyweight and focus on multithreading was reasonable. COM and .NET are amazing systems for runtime composition of systems. There’s a really nice architecture down there being choked to death. But it’s like all of this good stuff is either ignored or the tooling for it is half assed. To use .NET you’re stuck with msbuild, which is a ridiculous build system, and there’s no format for specifying “here’s the layout that dll’s will be plugged into.” You just drop them in, cross reference, and hope for the best. Most programs I deal with are halfway between using the Windows stuff and assuming Unix, so I end up just doing half my work in WSL2 anyway.

                1. 4

                  I have a similar feeling. I ran NT4, then Windows 2000, then macOS and FreeBSD until I started at MS and had to run Windows 10. Over the intervening years, macOS has become steadily worse, Windows steadily better, until there isn’t much in it. I like a lot of the low level bits of Windows but I’m not really a fan of the UI. A few things I do like:

                  • Windows Terminal isn’t quite as nice as the macOS one, but it’s as similar level to the KDE and GNOME ones.
                  • WSL ships out of the box. I would prefer a BSD-style userland, but I can tolerate a GNU one, WSL lets me run Ubuntu or whatever directly on Windows. There’s tight integration here, so I can invoke Windows apps directly (e.g. explorer.exe . in bash to open a graphical file manager in the current directory) and even have named pipes between Windows and Linux programs. wslpath lets shell scripts convert things into paths that Windows programs understand. I can run a batch file that comes with Visual Studio to drop into a cmd.exe prompt in my current directory with all of the environment variables set up for a specific Windows toolchain and then use cmake-gui . and ninja to build stuff, without leaving the terminal.
                  • Hyper-V works very well. I spend most of my time in a FreeBSD VM in Hyper-V.
                  • All of the corporate boring software works (mostly as well as it does on a Mac, sometimes better, Teams is worse for some reason).
                  1. 2

                    Windows Terminal isn’t quite as nice as the macOS one, but it’s as similar level to the KDE and GNOME ones.

                    The article also mentions that you can get Windows Terminal. But what can you do with it? I do half the things in terminal in my personal computers, and mostly click around on my work computer. Granted, I could work out some workflows, but then most of my colleagues don’t follow anyway, so what’s the point?

                    1. 2

                      The same things that I do with a terminal on other computers:

                      • SSH to other machines / VMs
                      • Use vim to edit files
                      • Use CMake, Ninja, and clang to build things. The same build system can also generate Visual Studio projects for people who want that or be driven from VS Code for people that prefer not to drop into the terminal.

                      The Windows Terminal runs the old cmd.exe for masochists, PowerShell for people who want a rich programmable environment for controlling most aspects of Windows (or Azure), and *NIX shells via WSL for folks that want a Linux-like environment (or via WSL2 for people who want a real Linux environment).

                    2. 1

                      WSL ships out of the box. I would prefer a BSD-style userland

                      I just had a wild thought when I read that: would a Slackware (which I’ve always felt was more BSD-like) WSL installation scratch that itch? Would it be possible to do an Alpine WSL installation with BSD versions of all the utilities you care about, and if it worked, would that do the trick?

                      (I’m not saying those in an “I think you should do them” sense. I’m just wondering if either direction would make WSL feel better to you.)

                      1. 1

                        Not really. The things I miss are FreeBSD libc, pkg, kqueue, Capsicum, and the command-line flags for various core utilities. Given the lack of those, I mostly use WSL to SSH into a FreeBSD VM.

                        WSL2 was designed to be able to support any OS in the guest, so perhaps I’ll get a WSF at some point. There’s a bunch of exciting integration work to do. WSL2 uses 9p-over-VMBus and the FreeBSD 9p-over-VirtIO (which would be the starting point) is still immature (I don’t think it’s merged). It uses an image activator for PE/COFF images that passes them to the host OS to run, and it has some integration between pipes and Hyper-V local sockets so that you can pipe the output from a Windows program to a Linux one and vice versa. All of that woul need to be ported.

                  2. 6

                    Sometimes I think I’m the only programmer in the world who actually prefers developing on windows to Linux.

                    (Windows tip: powershell comes with an ide. Use it, it’s great)

                    What isn’t fine, is that they’re stored in the Windows Registry, apparently? If you update these, either using setx %var% value, or the GUI…​ you have to restart your shell - i.e. you type exit, the window/tab goes away, and you open another one. Just let that sink in for a moment.

                    refreshenv

                    1. 5

                      Sometimes I think I’m the only programmer in the world who actually prefers developing on windows to Linux.

                      Similar, but I probably have different reasons from you. For me, I find Windows bad if you’re trying to do POSIXy development, but that’s square-peg-round-hole. For me, I just find both the native and .NET development thing (the whole thing) to be better thought out than the Unix equivalents.

                      1. 2

                        (Windows tip: powershell comes with an ide. Use it, it’s great)

                        It is perhaps worth noting that the “ISE” has been deprecated. Microsoft has suggestions for how to replicate it with VS code but that does not work as well for me as the ISE.

                        1. 5

                          Now that is the Microsoft I remember!

                        2. 2

                          I don’t think you are. I also don’t think the majority use Linux, but macOS from my experience. While I personally use Linux, not because I’m happy with it (it actually b got a lot worse compared to when I started it 15ish years ago), I feel like Windows devs struggle a lot less with their OS then macOS devs, who seemingly spend a pretty big amount of time with maintenance tasks.

                          While this is our course anecdotes I’m consulting in quite a few companies and that’s something I i particularly notice in the last five to ten years.

                          For windows devs the struggles always were mostly about initial setup and files where case sensitivity is important or ones that start with a dot. However these things seem to have gotten better?

                          But yeah, macOS is certainly the most common outside of more enterprise/old companies. It sometimes also seems to be a bit of a “now that I get an engineering salary I will buy and use Apple’s products” which seems to be a bit of a status symbol thing a bit like big cars are/used to be.

                          Don’t get me wrong, all competent people and there’s reasons and it’s anecdotal. Just some things I’ve seen over the years.

                          1. 2

                            Setx is the Windows equivalent to adding a variable to .bashrc. If you did that on Linux, you’d have to restart your shell. If you want to modify the current shell, use set. The real difference between Windows and Linux here is Windows is providing a GUI and CLI tools to modify its equivalent to .bashrc or /etc/profile.

                            (Really, this whole article sounded like a lot of “I don’t know what I’m doing, therefore this platform is terrible” but this particular point was an extreme case.)

                          2. 6

                            I made the same move a few years ago after I joined a Windowsy company and a lot of this article is either just wrong or comes down to “you are doing it wrong”.

                            I do not have high expectations for my computers. I know my operating system is never going to get better because I know software never gets better. All I want is for my computer to work exactly the same as it did yesterday, and Windows is the only OS that can achieve this.

                            Linux installations regularly brick themselves nowadays thanks to dynamic linking requiring you to update everything in lockstep and bloat requiring you to install 10x as much software as before. This is obvious to everyone but Linux desktop users and (non-Nix) distro maintainers, and the indisputable biggest Linux development of the last 10+ years, containers, is a workaround for this. Even when it’s not a brick, having watched my friends using their computers, I think Linux people drastically underestimate how much time they waste fixing small stuff.

                            MacOS is the Ferrari of operating systems, you spent a lot of money and now it sits in the shop updating MacOS and Xcode and iOS and signing GDB all the time and btw you don’t have 100GB free disk space to install a 5GB update so it’ll be a brick in 6 months.

                            To respond to some of the stuff in the article:

                            Linux is a toolbox, full of highly polished tools

                            Lol? Linux has some nice dev tools (all of which run in WSL btw) and is unusable for everything else. Windows has a surprisingly large ecosystem of really good software available for free or nominal amounts of money. Affinity is lightyears ahead of Gimp/Inkscape/etc for an amount of money that rounds to zero on a dev salary. Linux photo management software is all ludicrously bad. DaVinci Visual Studio’s debugger is simultaneously stuck in the 1990s and lightyears ahead of gdb/lldb, which are stuck in 1970. Mountain Duck is supposedly very nice although I haven’t used it. Everything is magic. Live++ is insane and will almost certainly never happen on Linux. AutoHotkey is super easy and surprisingly powerful.

                            Stupidly long paths with lots of spaces in don’t matter if you’re only ever clicking on things in the GUI file manager

                            Windows has “symlinks” and “symlinks”, WSL has actual symlinks and Linux style paths.

                            Lots of other wrong/trivially fixable stuff but those were the standouts.

                            Anyway here’s some other ways you are (probably) doing it wrong:

                            If you installed anything other than IoT Enterprise LTSC 2021 you are doing it wrong. LTSC is the version of Windows that comes with everything pre-uninstalled and only gets security updates. It’s supported until 2031, so you can realistically expect your OS to be functionally identical now and 10 years in the future

                            If you use any Windows terminal you are unfortunately doing it wrong. They all either don’t actually work, or drop to Seconds Per Frame when you hold pagedown in vim (GPU acceleration??). Install xming and run a Linux terminal from WSL. Google for some crappy vbscript so you can launch it directly.

                            If you aren’t using Everything you are doing it wrong. Hide your start button and use Everything as a launcher. Use it instead of Windows search (disable the services so they don’t ruin perf) and Explorer.

                            If you use cygwin/mingw you are doing it wrong. WSL is really good. You “only” need to install a text editor/git/ssh, which will still be hundreds of packages, so run Arch Linux with a hardcoded wayback machine date so it can’t brick itself. Google for some crappy vbscript so you can run sshd and ssh in over a VPN like your Linux machines. You can probably use actual containers but I’ve not tried, or you can use a second WSL dir for throwaway stuff.

                            If you use a package manager you are probably doing it wrong. The biggest benefit of running Windows is that package management is so busted the only way to ship anything is fully static linked/self contained. You can update some tiny number of packages that actually need it, with no chance of breaking anything else!

                            1. 4

                              I felt a lot of this when I went back to using Windows basically full-time with my latest desktop build. I built a beefy rig thinking I’d be happy with some VMs running Linux in the background since I already kept my previous desktop rig on as a glorified Windows gaming console and used a laptop with macOS or Linux for most daily productivity and development. I’ve largely relearned Windows at this point but the Windows administration skills I picked up working IT in the mid-2000s are rather atrophied. As I do some small tasks, I find myself writing some Ruby to do the work instead of shell because even with tools installed by scoop, I’m hitting unexpected problems in PowerShell.

                              A friend of mine from my first programming job could have written this article. He just got hired at a shop that is Windows-only and is experiencing a lot of the same pain as a developer working in PHP and JavaScript. He’d not used Windows basically at all for the 14 years I’ve known him.

                              1. 3

                                Yesterday I wanted to play a game on Windows (otherwise I use Linux) and I stumbled upon “Microsoft Rewards”. Basically you get Points for using Bing and other things. I already had 25 points, because I accidentally hit enter on an internet search result after searching in the start menu (why is this a thing?). After discovering this I was baffled and stared at the screen for a few minutes where some popups were explaining me “Microsoft Rewards”. Oh and then I started the game and got a bluescreen. Lets say it was an adventurous evening…

                                Oh and may be this is because I‘m running an old version of Windows 10, but all tries to feature upgrade failed so far with the mysterious error “0x8007001f” which can literally mean anything.

                                1. 1

                                  why is this a thing?

                                  You can get internet search results in, say, ubuntu as well. So it’s not a windows-only “feature”.

                                2. 3

                                  When I started working at my first job I was given a Windows computer. I was already used to Windows since I have it on my desktop for games, but I’d never used it for development. It is terrible unless you’re working with .NET or whatever it is people use these machines for.

                                  Spawning processes has a much higher overhead on Windows so anything that uses mingw is magnitudes slower. Node package managers are much slower too and I’ve had many different troubles with big directories like node_modules. In general everything feels much slower and you often get random delays and slowdowns because Defender decided it was a good idea to scan your whole drive at 15:00. Today WSL seems much more reliable but back then I had tons of issues with dev tools that used some weird parts of Linux and just didn’t work on WSL.

                                  Adding to this, shortly after starting I worked for a client where everybody was using Linux or had MacBooks and I always had to tweak scripts, commands, packages and so on because that stuff just wouldn’t work on Windows. The only thing that worked was the shitty corporate software and VPNs they had me install sometimes.

                                  When I got a new work computer I immediately installed Fedora and save for some trouble with Wayland and screen sharing I’m much happier and things always just work. Even the VPNs are much better; usually all you have to do is install some networkmanager plugin from dnf and after some configuration you can just turn them on and off from the network drop-down in the Gnome tray, and I’ve never had trouble accessing the local network while using a VPN! Completely unthinkable stuff on Windows. Packages are mostly up to date compared to Ubuntu and the such, I haven’t had any trouble with broken updates, and for third-party proprietary software that’s not on dnf there’s usually a repo or an .rpm you can use. I use NixOS on my Linux machines at home but Fedora’s pretty solid for a work laptop.

                                  I pre-ordered a SteamDeck and I’m hoping it takes off because I’d be really happy to be able to install Linux on my gaming PC as well. Maybe the Year of the Linux Desktop is not so far after all…

                                  1. 4

                                    Spawning processes has a much higher overhead on Windows so anything that uses mingw is magnitudes slower

                                    Blaming Windows for things performing badly with MinGW is like saying that Linux sucks, with the caveat that most of the things you were trying to run were using WINE. MinGW is awful. My experience with trying to use it was that it was less effort to do a native Windows port than try to make MinGW do anything sensible (not helped by the proliferation of incompatible MinGW ABIs and the fact that MinGW carries patches to gcc and clang that make them do things that are incompatible with the upstream versions).

                                    1. 3

                                      I teach a React class with a mix of Mac and Windows students. I’m amazed at how much slower the Windows experience is for them.

                                    2. 3

                                      I feel your pain :D

                                      Two options…

                                      1. VirtualBox – create a VM and live in it
                                      2. WSL2 – starting to be possible to do real work with it

                                      Of course, there are still a bunch of irritants of varying importance – embrace the adventure.

                                      1. 2

                                        VirtualBox – create a VM and live in it

                                        I’m curious why you’d recommend VirtualBox. My experience is that it does not work as well as Hyper-V on Windows and Hyper-V ships with Windows and doesn’t need any additional installation.

                                        1. 1

                                          Sorry, I should have noticed this before…

                                          Fair question. Quick answers (that apply more or less equally for vmware-player):

                                          • being able to resize the VM window
                                          • usb device passthrough
                                          • they pre-date Hyper-V
                                          • passable performance*
                                          • this kind of stopped being so true around the time hyper-v came along

                                          Long winded story answer (which may be germane since it informs my biases)…

                                          I’ve been working with *nix systems since the late 80s. I have not needed to learn to live with Windows in any serious way until sometime after 2015… so for me, life on *nix is kind of a like a first language.

                                          I started doing freelance work for clients needing firmware help and regardless of the trappings of their environments – building firmware almost always boils down to some variation of (c)make launching a cross-compiler – so my previous experience building all kinds of *nix systems software gives me some super powers that seem to impress clients. Go figure.

                                          Adding the rise of devops to the mix – specifically, where everything is built and rebuilt continuously “in the cloud” on some kind of *nix appliance – makes me feel very lucky (and busy).

                                          Long story short – when I am forced to work on Windows – step 0 is to install some kind of posix like thing.

                                          We’ve had mingw/msys, cygwin and more recently wsl1 and 2. All of these things are great 80% solutions but there is always some random pain point. The big ones fall into two broad categories: filesystem namespace issues (inconsistencies in the way different programs deal with (or fail to deal with) pathnames) and performance (something, somewhere is painfully slow). When your actual target build machine is a linux box, the choice for me is a full VM.

                                          As it happens, I didn’t know about Hyper-V VMs until someone brought it to my attention (in the context of complaining about how wsl2/hyper-v causes virtualbox/vmware-player performance to crater). It’s worth pointing out that it’s not always installed – need to be Windows 10 pro or enterprise. It’s also my feeling that all this stuff is kind of new and my habits using VirtualBox are already pretty entrenched. Anyway, I didn’t hate the hyper-v vm but one of the deal breakers for me was that I could not resize the VM window without some grub hacking which made me lose interest pretty fast (well, that combined with the struggle to find enough disk space for all the various VM experimentation I was doing).

                                          Anyway with this client, I’m actually trying to move away from the full VM and live in a wsl2 world (because I’ve been pulled into another project where that’s just how they work). My intuition is that this is a better direction but I have pain points here too. Running Linux stuff on the Windows FS (via /mnt/c/...) is slow. Running Windows stuff on the Linux FS (via \\wsl.localhost\Ubuntu\... is slow and has other problems, like cmd.exe can’t see those paths) is slower still. Running Linux GUI programs works but is slow and finally the wsl2 vm does not correctly see usb devices so things like openocd don’t work – so you find yourself dealing with this weird mix of tooling that is not easy to transplant.

                                          If you’ve read this far… amazing – and sorry for the old-man ramble.

                                          1. 1

                                            Anyway with this client, I’m actually trying to move away from the full VM and live in a wsl2 world

                                            There’s something of a contradiction here, because WSL2 is a full VM, just one that’s patched to expose the host FS via 9p-over-VMBus, to allow forwarding pipes over Hyper-V sockets, and with an image activator that sends a control message to the parent VM[1] to run any PE/COFF binaries that you try to run.

                                            If you use graphical applications, it’s actually two VMs, one that you have control over and another one that is connected via PipeWire to the other that is maintained by Microsoft and has GPU pass-through so that it can render into a texture that the host windowing system can render.

                                            [1] On any system that supports it, the NT kernel runs as the second-most privileged VM on top of Hyper-V.

                                      2. 3

                                        As a slight counterpoint, I had a job in 2019 where I had to work on Windows after having used some flavor of Linux or BSD since 2004, and it was… fine? I setup WSL and just kept moving on with my life mostly as before, except for certain things I’d drop into the GUI for.

                                        I do agree that package management is a mess on Windows, but again, it was mostly a non-issue because of WSL. I used chocolatey to install a couple of programs and that was it. We also used Windows on our prod hosts and I tried to get them under some kind of Infra as Code management (settling on puppet after reviewing the options and deciding it was the closest to having any kind of Windows support). I hated every step of it and will never work with Windows on prod hosts again (say what you want about systemd, then try to run services reliably on a Windows host and deal with restarts and logging etc, and then get back to me), but don’t care about it being on dev machines. To each their own.

                                        However, copy-pasting things to and from Excel and having it just figure out what’s a table and what isn’t and having it all work is MAGIC. Oh my lord, so good.

                                        1. 1

                                          However, copy-pasting things to and from Excel and having it just figure out what’s a table and what isn’t and having it all work is MAGIC. Oh my lord, so good.

                                          Coming from a Mac, I had the opposite experience. Drag-and-drop and copy-and-paste work far less well on Windows. This was even the case in Office apps: in the Mac version of PowerPoint, I could drag an image from Safari into a slide and then drag the slide from one presentation to another and it never occurred to me that this wouldn’t work. On the Windows version, dragging an image from Edge didn’t work, neither did dragging a slide between presentations. I believe both of these are now fixed, but the fact that they didn’t work in 2018 was a shock.

                                          I wish *NIX DEs would copy OpenStep’s pastebin model instead of Windows’ clipboard model.

                                        2. 3

                                          I’ve started using Windows again on my work machine about two years ago, when I started working on my own full-time and figured Windows would give me the least impedance mismatch with my customers. I think a lot of the frustration in this article stems from the fact that the author is trying to use Windows as if it were Linux. That works about as well as trying to use Linux as if it were Windows. Don’t do it, it’s terrible. Embrace the Redmond. Just a few examples:

                                          Non-composable Software

                                          I haven’t tried it yet but lots of people swear by Autohotkey: https://www.autohotkey.com/ . On the other hand, Windows has pretty rich and rewarding system-level interfaces that makes it really easy to access system features from PowerShell & friends. Interactive composition is harder, but non-interactive scripts are easier. And, usefully enough, they tend to be well-documented and stable. I could literally reuse batch scripts I had from back when I was using Windows 2000.

                                          What isn’t fine, is that they’re stored in the Windows Registry, apparently? If you update these, either using setx %var% value, or the GUI…​ you have to restart your shell - i.e. you type exit, the window/tab goes away, and you open another one. Just let that sink in for a moment.

                                          I think if you change them by setx you can just refreshenv them in the terminal. Other applications do have to be restarted but that’s no different than Linux. It helps that some things, like explorer.exe, can be restarted pretty much non-distructively.

                                          As for package managers… yeah, can’t say anything about that, it does suck. winget is okay-ish but not what we’re used to.

                                          On the other hand, realistically, there’s a lot less application-level breakage to deal with. Living without package managers in Linux land, where some GUI library breaks every six months, is hell. I haven’t had to update half the programs I’m using here, and I never felt the need to :-D.

                                          There are also a few things that are just… gratuitous:

                                          It’s really inconsistent. Half of it is “new” UI and half of it is old Win32/GDI type UI - just as bad as KDE/GTK - except worse, because you can’t configure them to use the same theme.

                                          Let’s be honest here, they have never had any hope of looking alike since early GTK 3 releases. The best you can hope is a GTK theme that replicates Breeze colours and shapes somewhat, or a Kvantum theme that mimics a popular GTK theme. Neither of them even give you similar widgets, let alone dialogs and the like.

                                          1. 2

                                            To be even fairer, there is a new MSIX system, which adds containerization/sandboxing of apps (like flatpak/snap) as well as updating - while being simpler to create - but it’s new…​ so almost no-one uses it.

                                            I was dealing with that recently, trying to package up my own software for windows. It’s like using stone age tools. The msix is indeed promising, but so much is still not available through it. For example you can create a windows service in msix, but… not on any of the server versions - just consumer editions. And clickonce is just not usable for me since the advanced functionality can’t be sandboxed.

                                            Even worse, there’s no native tool for creating those packages. You’d think ms would release something fairly complete, but it’s either propriety solutions or vix or tiny situation-specific options. It blows my mind that in visual studio you can’t click “build this as MSI”.

                                            1. 2

                                              This is like cribsheets to me as im in the same boat. I didn’t know about scoop and persistentwindows and stuff like that. Hell I just found out today that windows ships with bsdtar and openssh out of the box.

                                              1. 2

                                                I’d never thought of the terminal emulator situation. I tried VSCode for 2—3 weeks a few years back. In Xmonad at the time, I did not understand at all why I would ever use it the thing. Between related bloat, battery churn, and M$ tracking, I came back to Neovim; however I had never considered how much of a godspend it must be for many having to deal with Windows.