
From macOS to Windows and WSL - elithrar
https://blog.questionable.services/article/accidentally-macos-wsl-windows-development/
======
setquk
I genuinely don't get this. WSL's backing filesystem (NTFS) completely runs
like ass. It's dire. 10x the latency on everything at least compared to Linux
running natively on the same hardware. This is because all small writes end up
in MFT contention and the entire of Unixy type things are based on lots of
small writes.

Plus on top of that, everything is rammed with telemetry on windows now, the
QA has gone down the toilet leading to a hosed machine at least three times in
the last two years for me and there is no clear direction they are going in
other than "throw poo on everything and see where it sticks". Any bets you
make are risky.

And honestly when I read about powershell and chocolatey used there I laugh
because a huge amount of friction for me came from that direction.
powershell's principle is based on the principle of most surprise. Like when I
tell it to download something, I don't expect to have to futz with IE browser
settings (WTF?!?!). And chocolatey sucks - the repository it pulls from is
full of abandoned and broken crap and missing packages (.net SDKs are my
favourite pain point here) where people have thought "hey it'll be good to
port this" and then leave it to rot.

That's the status quo for me and I'm not happy.

I'm going the other way to OSX. It mostly just works and that's all I want and
there's a local support network for the hardware which is decent and doesn't
involve me shipping it off to some third party and losing it for 2 weeks.

~~~
dpkonofa
I feel the same way. I used to use my Windows machine for _everything_ and
didn't even own a Mac but working on a Mac has been a real joy comparatively,
especially for dev work. Now, my Windows machine is relegated to just being a
gaming rig and I'm 100% happy with that. When I heard that WSL was a thing, I
went back to try and get that setup and, between trying to turn off Cortana,
navigating the god-awful new Control Panel/Settings, and the terrible overall
performance, I don't know how someone could subject themselves to that in a
professional capacity. Windows to me is infuriating and I'm pretty technically
proficient. I feel bad for the droves of users that end up on it and don't
have a choice, especially those that aren't technically skilled. It's just bad
now.

~~~
pjmlp
Apple wanting me to know all special keys by heart and not having ergonomic
keyboards is one of the reasons that puts me off.

Plus why do they have to have a microscopic return key on laptops?

~~~
aasasd
I'm using MS Natural 4000 with a Macbook. Alt and Win keys are remapped
through the standard settings, the context menu key is remapped with
Karabiner. Some extra keys can be mapped, only alas the numbered ones aren't
seen even by USB Overdrive.

(Of course, the Natural/Sculpt series barely scrapes the ‘ergonomics,’ what
with the slanted key layout inherited from typewriters, the flat board made
for extendable fingers instead of jointed ones, the too-low wrist pad.)

As for the special keys, I'm not sure what that's about, since I'm using
pretty much the same number of hotkeys as I did in Linux and a bit more than
in Windows. I'm also using Alfred for many commands, which are made in English
instead of obscure semi-random keys.

------
rbanffy
> I respect those who’ve invested the time into maintaining & automating a
> full Linux environment they can use daily

I can't imagine what he means by that. All my Macs and Linux boxes (from a
dozen of RPi-like ARM boxes, to laptops, to big Xeon server) and even the
OpenIndiana and FreeBSD machines all work without much effort. A `yum update`
here, a `pkg update` there and nothing ever breaks. It's actually boring
compared to 2004 or so, but we end up getting used to actually working.

~~~
larrik
Seriously, I spend WAY more time fussing with Windows than Linux on my dual
boot machines. Windows has also destroyed the usability of their settings
screens to the point that I find configuring Linux far far easier than
Windows.

~~~
babypuncher
Meanwhile I can't even get sound to work properly in any Linux distro on my
motherboard. Kubuntu 18.04 has a problem on both my laptop and desktop where a
fresh install works fine until you run apt-get upgrade then kdm breaks and
both machines boot to a black screen.

~~~
tapoxi
That's the caveat, you need to buy hardware that was designed with Linux in
mind. Throwing it on hardware where the designers only thought about Windows
will always be a bad experience.

~~~
rbanffy
I am glad to say it seems very hard to find hardware that doesn't work on
Linux.

------
PuffinBlue
> I’ll keep this short: I still depend on Lightroom, writing tools (Notion,
> Evernote prior), a solid default desktop environment, first-party hardware
> support (be it a MacBook or Surface) & battery life, and most of all, my
> time. I respect those who’ve invested the time into maintaining & automating
> a full Linux environment they can use daily, but I just don’t have the time
> for that investment nor am I ready to make the trade-offs required for it.
> To each their own.

Given the circuitous series of hoops the author goes through to get their
WSL/Windows environment in something of a working configuration the above
passage is kind of laughable.

I too depend on Lightroom, but I've had to break that hold and just this week
have gone the other way to a full Linux desktop. Windows breaks _so often_
it's not workable for me. And LR classic has been nothing but a buggy, slow,
bloated mess for me. Even just little things like opening the app paints the
window over all other UI elements and you can't click to bring another app to
the front before clicking/focusing into LR. Let alone the slow loading,
painfully slow image viewing and stupid stuff like hiding the mouse pointer
after creating a new folder.

I intend to split RAW development and Digital Asset Management, which is what
I should always have done, now that Lightroom is out of the way. RAWtherapee
and Darktable to a great job (and I say that as a former pro photographer) for
RAW development and easily enough for most pro work I did/do. The options for
DAM are varied but even Digikam is pretty excellent for most things.

Having just spent a year with Windows (having run Linux previously) Linux is,
amazingly, progressing towards 'just working' for me. Especially with
Flatpaks/Snaps (though developers need to get a grip of understanding
'filesystem=home' vs 'filesystem=host' and how this effects usability vs
sandboxing) as well as appimage. When they become available on Debian natively
it'll be kind of awesome to run a stable desktop with latest selection of
certain apps you might need.

It's true Nvidia support is bad. I did switch from Nvidia to AMD to make the
move. Is that unreasonable to expect the user to do? Possibly. But doing that
I get a hassle free 4k desktop, excellent stability (so far) and all the apps
I need (so far).

Being back in a terminal 'proper' again on the desktop is just fantastic. Not
having things update on their own with my say is even more fantastic. And the
fact it's not eating 12GB of RAM running LR and a browser is the icing on the
cake.

~~~
inferiorhuman
I still use the final version of the perpetually licensed Lightroom, and so
far haven't found anything to replace it. Sometimes I use it in a Windows VM
on FreeBSD sometimes I use it on a Mac. It largely just works, even with a
catalog that I desperately need to pare down.

Meanwhile Darktable is a pathological mess. I really want to like it. They
even offer a Mac binary on their download page. Unfortunately, it turns out
that the only first class platform is Linux. None of the core devs actually
use a Mac so bug reports languish and users are told to simply compile DT and
fix the bugs themselves. I'm working up to compiling DT, but the instructions
are all built around MacPorts which I ran away from years ago. Yes, I'm aware
that DT is an open source project maintained by volunteers but sometimes I
want higher level packages to just work without a fight.

If I want to import metadata from Lightroom I'm expected to export individual
sidecar files and hack up a script to do the import (hint: this doesn't
scale). The real deal breaker for me was that the latest version available on
the DT site simply crashes for me while trying to import photos. But not every
photo. I'm not particularly inclined to file a bug report because most Mac
issues get put in the circular file.

Once I got past that I found the interface to be… interesting. Despite the
superficial similarities to Lightroom, DT is wildly different in practice and
not all that intuitive to me (e.g. applying presets from the lighttable vs
darkroom modules — also seriously those names: darktable, lighttable, darkroom
are all far too similar regardless of whether or not they're based on
photography terms).

It's been a few years since I've tried RawTherapee but obviously that didn't
stick either.

~~~
wishinghand
Sometime in early 2019 check out Skylum Luminar. They’re coming out with a
Lightroom analogue that’s not subscription based.

~~~
inferiorhuman
> Sometime in early 2019 check out Skylum Luminar. They’re coming out with a
> Lightroom analogue that’s not subscription based.

Thanks, I hadn't seen that before. Two things put me off though:

1.) Lightroom really has motivated me to find an open source replacement. I
don't think I want to get locked into another proprietary solution.

2.) The landing page for Luminar 3 that I found was so full of marketing
hyperbole that I choked. There was a ton of fluff IDGAF about (e.g. export to
500px, "foliage enhancer" filter, Apple photos extensions, soft glow,
artificial intelligence filter) and some that just felt like easily
misinterpreted stuff (e.g. details enhancer filter, workspaces, polarizing
filter).

If there's a trial I may check it out, but I'd want to know more about the
tech details. Adobe got a few things right that I doubt other proprietary
solutions will. Making LR so extensible with Lua is huge (is the core written
in Lua?), storing its catalog in a relatively easy to parse SQLite db as well
makes it easy enough to interoperate. As much as I kvetch about migrating from
LR to DT, I think writing a module to import the LR metadata seems like an
ideal first attempt at hacking on DT project.

------
folkrav
I really don't understand most of his arguments against switching to Linux.

> I’ll keep this short: I still depend on Lightroom, writing tools (Notion,
> Evernote prior), a solid default desktop environment, first-party hardware
> support (be it a MacBook or Surface) & battery life, and most of all, my
> time. I respect those who’ve invested the time into maintaining & automating
> a full Linux environment they can use daily, but I just don’t have the time
> for that investment nor am I ready to make the trade-offs required for it.
> To each their own.

\- Software support, no problem, I can understand. I still have a Windows
partition for audio production.

\- The "solid default desktop environment" is pretty much crap - both Gnome
and KDE Plasma are far more solid DEs than Windows'.

\- First-party support I can't figure out what he means by that...

\- As for battery life, I have 10+ hours on my ZenBook running Arch. The
battery life is actually better on Linux than on Windows on this laptop.

\- Windows has been a much higher time-sink than Linux or macOS for me. Sure,
an Arch or Gentoo desktop would be higher maintenance than your average
distro, but come on, Fedora and Ubuntu are _super_ easy to install these days,
and the overwhelming majority of the time just work out of the box. It's 0
maintenance. My maintenance/automation scripts were like 80% ported straight
from my old macOS scripts.

I'm forced to use Windows on my work computer and it's IMHO terrible. Its
virtual desktop feature are useless (really, switching desktops changes _all_
screens at once?), the shell is crap, WSL basically feels the same as running
a VM and SSHing in, the DE is horrible.

~~~
z3phyr
The (One of the) real reason(s) anybody even considers Windows is Visual
Studio proper. Nothing comes close to it in proper IDE experience. It has
(arguably) the best debugging facilities in common existence.

~~~
jhasse
Visual Studio Code with the right extensions comes pretty close :)

------
nickjj
I've been using WSL now as my primary dev environment for about a year now and
it's really good. I use it for full time web development and creating video
courses (which is why I'm not running native Linux).

The WSL environment is very fast and reliable to the point where for the last
year I've been 100% at peace with my dev environment. I would say in 20+ years
of computing, this has been my favorite overall set up because you get a great
dev set up, you can assemble your own computer part by part and you have
excellent gaming support all without having to dual boot or run a Linux VM
(which I did previously for ~5 years). I finally feel like I have 1 machine
that does everything very well.

A typical dev day for me involves running Dockerized web apps (mostly Flask,
Rails and Phoenix apps with Webpack, etc.), tons of terminal usage, Ansible,
VMs, etc.. Everything you would expect to run as a developer.

If anyone is looking for a more step by step guide on how to get everything
running, here's 2 posts I whipped up on getting everything you need installed
on Windows[0] as well as getting Docker working flawlessly with WSL[1].

[0]: [https://nickjanetakis.com/blog/using-wsl-and-mobaxterm-to-
cr...](https://nickjanetakis.com/blog/using-wsl-and-mobaxterm-to-create-a-
linux-dev-environment-on-windows)

[1]: [https://nickjanetakis.com/blog/setting-up-docker-for-
windows...](https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-
wsl-to-work-flawlessly)

------
_coveredInBees
I'm somewhat on the other side of things where I've been using Windows
exclusively on my work laptop for many years (I have a Linux box at work) and
have been seriously considering switching to a Macbook Pro for over a year
now, but I'm continuously frustrated by things on the Apple/Macbook side of
things (my wife has a 2017 MBP).

Apart from the annoyance of the keyboard on the MBP and my personal preference
for physical Fn keys over a touchbar, it is simply amazing to me how bad the
Macbook Pro is with playing with simple external peripherals like Docks and
external monitors. I've tried using a USB3 based dock, as well as a
thunderbolt dock to connect 2 external displays to a Macbook Pro and it's just
been horrible. The former didn't even work, the latter only supported one
monitor for whatever reason. I then tried using 2 simply USB-C to HDMI
adapters to connect to the two monitors (hello dongle land!) and while both
monitors are seen, OSX refuses to support 1920x1200 on my new Dell 2415
Monitor and ends up stretching a lower resolution across the monitor, making
everything look like garbage.

Occasionally, on reboots, it will work fine again, but it needs to be your
lucky day. Why Apple won't make their own fucking dock so that I can pay them
some extra Apple tax just for some sanity and peace of mind is beyond me.
Meanwhile, my 2 year old Dell XPS (which I don't really love at all) has never
had an issue with external monitors via any of these docks ever.

So here I am using WSL on Windows 10, and you know what, it keeps getting
better and better, and I might just end up sticking around with Windows.

~~~
alkonaut
Hardware really is where windows shines. I connect a new laptop to two
external monitors with different resolution and dpi and everything just works
including dragging windows between them and rescaling for most apps. For some
reason it feels like it even knows which monitor is placed where which would
be more than creepy (I can’t imagine it does, so must be confirmation bias).

------
Aaronmacaron
I use Windows + WSL on a daily basis for web development. This is what I did
about the Terminal Problem: I installed XMing (an X-Server for Windows). Then
I configured WSL to use the the X-Server installed on the host. This way I can
use any Linux terminal emulator (actually any Linux GUI Application) on my
Windows machine. This works surprisingly well for how much of a hack this is.
I've been using this set up with gnome-terminal on a daily basis for over a
year now.

It'd still be great if there was a solid windows-native alternative.

~~~
Koshkin
Cygwin has been working for me much better than WSL. Besides being a complete
Linux-like environment, it is rather seamlessly integrated with Windows -
which allows to take the full advantage of the software available on Linux
when working with Windows files.

------
cube2222
I'm at the point of considering a switch in the other direction.

I love how seamlessly wsl works and gives you a _real_ Linux environment.
Writing on my screen (surface pro) is great too.

However, I'm mad that I'm getting ads (preinstalled Candy crush) on a Windows
pro machine. Also, os x is much more privacy oriented overall, and it's the de
facto developer machine.

The only reason I'm hesitating is that although osx is Unix, I'm scared I may
miss a full Linux installation which you have with wsl.

~~~
andmarios
Same issue here. I'm a Linux user but recently got a new laptop and thought I
should at least log in once to Windows before installing Linux.

I was welcomed by candy crush tiles and other questionable stuff. It is
totally incomprehensible to me how a machine that costs almost $2k has candy
crush as the first tile the user ever sees. I don't think Microsoft cares
anymore.

~~~
cube2222
I think it's just lack of communication/vision shared between departments.
Everybody is trying to maximize their respective outcome without caring about
the overall product. At least that's what it seems like to me.

------
insulanian
Used Windows for years, from 3.11 to 7. Switched to Mac couple of years ago. I
don't think I would consider using Windows ever again, unless they go back to
7 and create a new reasonable iteration out of it. Everything after 7 is just
not worth the frustration.

~~~
scarface74
I keep being tempted to go back to Macs - especially the new Mac Mini - now
that most of my work is cross platform (.Net Core/Python/NodeJS) but I don't
see any advantage just for that reason. I spend little time mucking with the
OS. Most of my time is in VS Code/Visual Studio, Chrome and Notepad++. I don't
see that changing. The rare occasion that I need Linux I use WSL locally.

------
lostgame
I always kinda chuckle at articles like this - for a creative individual such
as myself that's very locked into Logic Pro X and Final Cut X, and a full-time
iOS developer, ditching a Mac would mean losing ~15 years of backwards
compatibility for my media, and being stuck with far less-than-ideal
virtualization solutions for Xcode.

Even with their pitiful current hardware offerings that almost seem like a
direct insult to long-term dedicated fans, I'm still locked into their
excellent software.

~~~
elithrar
Author here: of course it’s not a fit for you!

I qualified my “yes” with the primary uses for my computer, which doesn’t
include any macOS specific software (Sketch was the most recent).

If I was using FCPX, Logic or doing iOS development I wouldn’t have opened my
editor to write the article ;)

------
akulbe
Can't help but feel a bit of vindication/validation after reading this.

I've commented on the declining quality of Apple hardware and software, and
switching to Windows 10 + WSL, several times on other posts.

Like OP, this isn't a perfect experience. It felt like it was a very balanced
treatment of the issues.

There are still issues, for sure... but it's definitely passable, and
improving. (At least for me.)

As far as the slow I/O performance, I believe the heart of this is Windows
Defender live scanning the FS where each WSL environment resides. If you
exclude those in Defender, you see a _significant_ increase in I/O
performance.

Side note: I wonder if Apple is observing this trend at all, and/or if they
even care? They give lip service to the idea that they care about the Mac
still... but the experience is still lackluster.

------
vegasdew
I am using mac from about 4 years, because it is standard at company. While
hardware is decent (2015 Pro). I don't understand the fanboyism around OS.
It's not keyboard friendly (e.g. can't quickly open menus without mouse), it
force maximize to desktop, but multiple desktop support sucks. Multi monitor
support is mediocre at best.

------
safgasCVS
I am quite happy with WSL - I might not be the target audience as my needs are
almost entirely for statistics but WSL beats a vm for rstudio server and awk.
You’ll hear nothing but praise from me

------
pkulak
This sounds like a huge pain. Makes me wonder if Google's approach of just
sticking the whole thing in a VM is the better way to go. They still have a
LOT of issues to work through (graphics acceleration, USB support, etc), but
if they can really nail that, it could be interesting in a year or two.

Until then... I think I'll just stick with Mac.

------
lj3
Have they fixed the git corruption issue yet? I switched from WSL to MacOS
specifically because, if the computer blue screens while I'm working in WSL,
something in the .git directory corrupts itself and I have to check out the
repo again.

------
kuroguro
@terminals - consider ConEmu (wasn't listed) - it's fast (native) with unicode
support and lots of configurability.

[https://conemu.github.io/](https://conemu.github.io/)

~~~
_coveredInBees
I switched from ConEmu to wsltty. ConEmu is a decent resource hog and I've
seen it use 3-5% CPU cycles all the time, even when idling. It also handles
the rendering differently (can't remember technical details), which is why it
has some great features, but is also more of a resource hog. Maybe this will
change with the new API coming in Windows 10.

By comparison Wsltty is much simpler, but works like a charm, and t-mux with
mouse support is so liberating to use.

Edit - Found the resources on ConEmu's site that mention the technical
limitations

[https://conemu.github.io/en/CpuIoConsumption.html](https://conemu.github.io/en/CpuIoConsumption.html)

[https://conemu.github.io/en/RealConsole.html](https://conemu.github.io/en/RealConsole.html)

------
justinmchase
WSL is great on windows but the situation with Docker is pretty bad still.

Docker on windows needs to not require Hyper-V but to run as a kernel process
like WSL does. Also the volume mounting straight up doesn't work on windows
and if they can resolve those issues then suddenly a lot of things open up.

~~~
radus
Not my experience with Docker on Windows - volume mounting works (and has
worked) without issues. I remember at some point being prompted to share my
drive so that Docker can access it - perhaps you need to flip this switch in
the Docker settings?

~~~
GordonS
I think volume binding only works with Windows containers?

I seem to recall trying it with Linux containers and immediately hitting
permissions issues due to incompatibilities between Windows and Linux.

I am at least able to bind individual files using Docker Compose's 'secrets'
and 'configs'.

------
DrTung
Was on Windows from 1986-2010, Ubuntu 2010 - today, but will be switching to
MacOS on a MacMini soon, and the reason: Apple's old filesystem HFS was slooow
when grepping/compiling etc. but the new APFS is comparable to EXT4 in speed,
makes all the difference.

------
vijaybritto
My experience on WSL: very slow shells. Serious Web Dev work is not possible.
So much catching up to do with Mac. Maybe MS should build that shell natively
in windows with all those command programs

------
ocdtrekkie
Whoa there, your script starts with "Disable UAC"! You might as well just
traipse around the Internet with a Windows XP machine, clicking on every shady
looking ad for good measure, with that take on security. UAC got some flak for
compatibility issues when a lot of apps didn't support it yet, but today, UAC
is well-supported by everything, and nobody should ever be turning it off.

------
ulzeraj
Last time I've tried chocolatey there were lots of outdated packages and those
applications keep pestering me to download the latest version through their
updaters or manually. So what's the point. Besides I hate Powershell Long-Ass-
Weird-Awkward-Cmdlets -force.

------
nailer
> I’m using Terminus for now

Completely agree. If you're on Windows and still using ConEmu give Terminus a
try.

~~~
EpicBlackCrayon
Yeah, thanks to OP for that. I was using Hyper before and the performance was
abysmal. Terminus has the same great rendering and is much more performant.
100 MB one terminal with some work is still not amazing, but it sure as hell
beats 300MB while just idling with Hyper and 5 second load times for a window.
I think Electron apps are an order of magnitude slower in general, but the
Hyper team really seem to have made some poor choices on top of that.

~~~
nickjj
My least favorite thing about Hyper was whenever you split a window
horizontally you would lose your cursor because it would be hidden "behind"
the split pane above it, and then you would have to hit CTRL+C like 20 times
or force some output to the screen.

I opened an issue for this 2 months ago[0] and the team hasn't responded yet.

I'm about ready to call it quits with Hyper (ConEmu has its own set of even
worse bugs).

The problem with Terminus is it currently has no support for splitting
windows, so if you want that behavior you would have to use tmux. Although now
with Windows 18.03+ being out, tmux sessions persist after closing your
terminal so maybe that's the best way to handle splitting windows.

[0]:
[https://github.com/zeit/hyper/issues/3258](https://github.com/zeit/hyper/issues/3258)

------
throwawaywhynot
macOS is the buggiest os I've used in my life so I can't imagine how wsl can
be worse. Unless the shell itself is clunky. macOS gui is a mess

~~~
welly
Any examples of how the macos gui is a mess? Given that every other os is
trying their hardest to emulate it.

------
wnevets
WSL has made it much easier for me to stay a windows user. However had the
idea and got the thing launch deserves a promotion at microsoft.

------
jmlucjav
if somebody likes chocolatey/Boxstarter, have a look at
[https://github.com/Disassembler0/Win10-Initial-Setup-
Script](https://github.com/Disassembler0/Win10-Initial-Setup-Script) The three
together work like a charm, though it does some things much better than
Boxstarter imho

------
stinos
Wrt to the FS sharing, wouldn't it be possible to share the WSL root with
samba and access it on Windows?

------
Koshkin
What does “Windows Services for Linux” even mean - given the conspicuous
absence of what is being “served”?

~~~
ld00d
do you mean "Windows Subsystem for Linux"?

~~~
Koshkin
I guess... In the past we had “Windows Services for UNIX” - which, by the way,
was based on the actual POSIX subsystem rather than something that sits on top
of Win32. Anyway, the point was, shouldn’t “for” in this context be understood
as “instead of”?

~~~
ld00d
"Windows pretending to be Linux" doesn't have the same appeal.

------
wemdyjreichert
I've tried it; still like unix-likes better. No af_packet, no cuda, doesn't
work for me.

------
jaxondu
Hoping MS will create a Azure Linux and a Windows desktop on top of it.

------
jo-wol
How do they run tcpdump with WSL or anything related to network?

~~~
runjake
They don't.

Along with a bunch of other network socket stuff, such as many of the tools in
Kali Linux, which they have published in the Windows Store. Nevermind that a
significant chunk of Kali's tools do not work in WSL, at present.

------
shdh
WSL is fine for dev. Performance is abysmal.

------
0x54D5
VSCode with WSL with Nginx & PHP 7.1 only has one issue currently. A bug with
fastcgi buffering which I have documented here:
[https://github.com/Microsoft/WSL/issues/3687](https://github.com/Microsoft/WSL/issues/3687)

Yes. It's a little bit slower but for development local environments it really
does not matter.

I actually set this up for the Windows devs at work but I still use a 2014
MBP.

Our ionic app though is a huge pain in the ass that requires Visual Studio to
setup a decent dev environment in native windows.

