I previously wrote how surprised I was to see how good it felt to do development on Windows with Windows Subsystem for Linux. And with VSCode and Node / Typescript it was.
Everything worked well, and the boundary between Windows and Linux subsystem felt nonexistent. I was also surprised that tools already existed to make even React Native development with expo to work pretty well, meaning that persons had packaged firewall configuration tools into a node package.
https://github.com/icflorescu/expose-wsl
But once I started to do something I really liked, developing with Kotlin and other JVM languages - I stumbled upon problems.
For JVM development I have used IntelliJ Idea - and tried to use it now too. There exists support to work with WSL, but the experience was not what i would have liked to see.
Idea nicely complained about Windows Defender and automatically configured exclusions, so that defender should not bother the development work. This also seemed to work with paths inside \\$wsl paths …
However everything was not sweet and dandy once IDE tried to do what it wanted to do. Either IDE got stuck in indexing data from WSL side, or just crashed without leaving error message on what happened.
I found few bugs from Intelli J bug tracker related so similar situations, and decided that this is not the fight for me.
I could have changed my workflows to have JVM development on windows side, frontend development in WSL and then have Caddy to be the common proxy connecting processes from the WSL side and Windows side together.
But at this stage I though that it would be better to just get back to Ubuntu side whenever I really want to focus on programming tasks.
This is not to say that I would not do programming and tinkering on Windows, but rather that I will still continue to prefer Ubuntu and OS X over Windows WSL.
But if these few weeks have learned something to me, it is that the difference between these environments is shrinking - and I could be happy and productive with any of these. I just don’t have interest to solve development experience problems that might exist in one environemnt - if it is clearly solved already in another.
Switching between OS X, Ubuntu and Windows WSL has been easier than I thought, especially as tooling otherwise stays mostly the same. Some keybindings have been naturally a bit different and some OS services might work a bit differently, but life can be good in all these environments.
For me this means that switching costs between platforms are smaller than I thought. I still have some applications that I like to use on OS X that are not available on Windows or on Ubuntu, but reasonably good alternatives do exist.
Life is good.