Most people that I showed the Surface to were impressed by what they saw, but almost always came back to the same thing: it doesn’t run macOS.
I’m increasingly frustrated by this because it’s almost always a misunderstanding of how far Windows 10 has come, and how compatible the workflow now is regardless of what you might do for a job. I suspect most people haven't touched Windows since years ago and it's time for a serious second look if so.
I’ve written about web development on Windows 10 before, but even since a year ago it’s come such a long way. The Bash on Windows environment is now so performant and well supported that you won’t even know the difference if you move from a MacBook, and Microsoft continues to improve it at an impressive clip.
Unless you’re using Xcode, your workflow will almost certainly move from macOS to Windows as a non-event: it’s that good now, and I spend most of my time living in the Bash environment without any problems — even with complicated situations like Symlinks inside Bash now actually working fully.
It's everything around baseline development that sucks when using WSL, not WSL itself. WSL itself is really cool. What's not cool is dealing with linters and compiling tools and all the other bric-a-brac that has to cross the Windows/WSL divide. Some of them have been fixed to support WSL, others haven't, knowing which have and which haven't is a crapshoot, and WSL is a third-class citizen at best so good luck waiting on them.
On top of that, all of the little things are wrong. MacOS/Linux aren't identical by any means but I expect (say) important configuration for everything, not just my things, to be accessible via my shell. My shell, by which I mean having to bail out into PowerShell (which is a bad acid trip) or into clicking stuff is just not gonna fly. I am not unfamiliar with or uncomfortable with Windows but it irks the hell out of me to have to bail out of my work environment to start clicking around or to `Start-OddCommands -WithSillyFlags` and there's no reason for it.
When I ditched MacOS, I instead went to Fedora. (Which, I am told, does run quite well on a Surface Book.) There's a Windows partition on my work machine, but it's mostly just so I can run a DAW (Ardour is bleh, don't @ me) for remotely recording audio.
It's been like six months since I tried, because Fedora does great for me now, but in Visual Studio Code Ruby/Rubocop threw a rod, using a Linux-based .NET Core confused it, and anything Java was a nonstarter. For JavaScript, I do usually run `yarn watch` (workspace-level through oao) in a terminal and that works fine, but stuff like eslint/tslint integrated into VSCode was regularly a real pain.
Worse: because VSCode--and if it wasn't a Microsoft product I would be less annoyed, but it's their editor and their OS so they can own it too--doesn't really support per-platform configurations, working around it by disabling stuff on VSCode causes my settings sync solution to break my other machines...
> doesn't really support per-platform configurations
It would be neat if the config file were JavaScript that's executed on startup like Emacs does. My init.el has a couple functions that behave differently under Mac (it still calls it NextSTEP, how cute) and Wayland (which it nostalgically calls X). After "accidentally" destroying my last corporate issued Windows install, I never went back and ripped the Windows-specific part of "set-perfect-font-size".
Oh man. I like the way you think. Basically everything I write uses a code file for configuration, regardless of language; do-est thou likewise, people!
With the pounding I've put on my hands, emacs is mostly a nonstarter, so I'm jealous.
I've tried to adopt the alternative bash systems on Windows, and they are nowhere close to terminal options on OS X (or Linux!). It still boggles my mind why we have to stay within the limits of the cmd.exe UI, with the lack of window resizing, easy copy/paste, and proper font rendering. Then, on top of that, Windows will never have a proper unix-like filesystem. I just can't go back to that.
The only thing windows has going for it when it comes to development is performance. My windows desktop screams compared to my mac, but is relegated to gaming.
I can resize, copy/paste and change font/color/transparency settings on my cmd.exe without any problems. I get your point but they really improved it since Win7/8
Powershell is flashy but I find it's a poor interactive tool but great for scripting. I tend to stick with cmd as the better shell and run sh scripts when I need a little more done.
It may be old and have its quirks but people dismiss cmd way too quickly.
Doesn't powershell still have the same UI limitations of cmd.exe? I'm not talking about the actual shell itself, but the application the shell runs in.
> I suspect most people haven't touched Windows since years ago and it's time for a serious second look if so.
I feel like this is evidence of living in a bubble. Windows is the dominant OS for anything in a PC form factor (even if you include the iPad Pro in the count).
I routinely test software and web applications (and a font) on Windows. It never ceases to amaze me how verbose PowerShell is, or how confusing and convoluted is everything around managing a Windows machine. You have vendor-provided settings panels and widgets for video, network, and wireless, you never quite know what went wrong where and which is the right place to fix it or where do you add a setting. I really don't want that.
For most people, the web is the dominant platform and Windows is just what draws Facebook on the monitor.
I've never been happier using Windows with WSL + Docker for Linux based web development. Things are super stable and the computer I built for ~$750 almost 5 years ago (i5 3.2ghz, 16gb of ram, ssd, decent video card, etc.) still runs as fast as it did on day 1.
Its not even that it doesn't run macOS its that it makes doing _stuff a hassle. Like I wanted to dual boot my gaming rig to also run Linux, and figuring out sdd and hdd partitions and clearing up space on the hard drives was made way more difficult than it needed to be. Had to enter a second shell look up commands for it etc. On a nix machine it was du -sh | sort -h
Maybe, but this is the kind of thing you can't test until you own one and use it every day for a couple of months. There are dozens of command line tools I rely on; any of them breaking is a deal breaker, even the ones I only use a couple of times a month.
The biggest problem with Windows is de-facto key escrow.
If you want to use BitLocker in W10, you have two options:
1. Escrow your FDE keys with Microsoft Live
2. Go through the hassle of setting up a PDC and escrowing them to your domain.
There is no option to NOT escrow your keys to a very LEO-cozy company with a local account. This is an immediate deal-killer, regardless of any other features or improvements.
The short version is there are multiple levels of BitLocker functionality and what options are available is dependent upon hardware, group policies, and the Windows Edition installed.
Most people that I showed the Surface to were impressed by what they saw, but almost always came back to the same thing: it doesn’t run macOS.
I’m increasingly frustrated by this because it’s almost always a misunderstanding of how far Windows 10 has come, and how compatible the workflow now is regardless of what you might do for a job. I suspect most people haven't touched Windows since years ago and it's time for a serious second look if so.
I’ve written about web development on Windows 10 before, but even since a year ago it’s come such a long way. The Bash on Windows environment is now so performant and well supported that you won’t even know the difference if you move from a MacBook, and Microsoft continues to improve it at an impressive clip.
Unless you’re using Xcode, your workflow will almost certainly move from macOS to Windows as a non-event: it’s that good now, and I spend most of my time living in the Bash environment without any problems — even with complicated situations like Symlinks inside Bash now actually working fully.