Linux on the Desktop as a Web Developer
nolanlawson.com
nolanlawson.com
I miss a whole lot of other things and looking for replacements on Windows, it's especially annoying that everything that MS produces is promoted as the next best thing to sliced bread, so you're never really sure if the solution you're being sold is just pure shite, or if it's really worth your time. And on that note, I would never believe that I would miss the capricious Linux community, because it doesn't matter how good Canonical gets it on a release, we're guaranteed to have laments about the millions things they got wrong this time. But it's only when you decide to take a stroll on the neighbor's grass that you realize how green yours really is, right?
The world would be a better place if people could do this on their work machines.
I recently discovered Multipass, made by Canonical, which provides a simple and cross-platform command-line interface to manage Ubuntu VMs. Not sure if it would fit your use case, but wanted to mention it as an option.
It's been super useful for me, to be able to spin up new VMs for learning and testing stuff, as well as a couple larger persistent ones with mounted volumes for local web development. For what it does, it performs better than Docker, at least in my experience. It's even possible run an X Window client/server as a GUI to the VM.
So finally after taking a hard look at all the software I was using on a day-to-day basis including some JetBrains tools, Sublime Text, Slack, and a few others, I finally decided to go for it.
The only thing where the experience isn't working for me as well is 1Password. The Linux flavor (1Password X) is getting better and better all the time, but it's not quite as polished yet as 1Password.
To anyone looking to make the switch, go for it.
I use 1Password for Firefox on Linux and it works flawlessly.
I'm wanting to learn a typed language good for backend and trying to decide between Go, C# and Java.
My blog post got quite a bit of heat (both for and against). In the years that followed I actually had some discussions with a few of the higher ups within Microsoft regarding my blog post wherein they said they were very much aware of it and taking active measures to resolve the issues addressed therein.
I am very happy to report that C# and .NET Core are very, very attractive options now. When I left (2012), I was sick of trying Linux .NET stuff (Mono) because I had to find/fix so many bugs and submit patches for it back to the mainline. Frankly, the Mono guys pulled off some miracles in my opinion but I kept getting bitten so much that I just couldn't use it. This was from about 2008-2012. Further, when I left and started using Go, on the techempower benchmarks (https://www.techempower.com/blog/) it showed .NET being almost dead last for HTTP requests per second. Nowadays Microsoft has pulled a virtually impossible feat of engineering to make their stack among the best of the best with regards to performance.
In any case, Go is a solid choice. Where I work we are very, very happy with it. Every so often I miss some aspects of the syntactic sugar that C# had for things like LINQ, but on the whole I am very happy for the kinds of things I am trying to achieve in using Go. Further, the ecosystem and tooling are maturing nicely with a wide variety of libraries available.
If I was to move over to a JVM-based language, I would consider Kotlin. If I wasn't using C# or Go or Kotlin, Rust is very high on my radar and continues to intrigue me.
Pros: compared to Macs using Docker is very performant especially when sharing the host file system for development and once I found Regolith (https://regolith-linux.org/) I don't think I could go back to a normal windowing system.
Cons: non-Electron cross-platform apps seems to get short shift on Linux. For instance, the Zoom client is buggy and seems to be the last to have new features rolled out to it and I CANNOT for the life of me get my Microsoft mouse's scroll wheel to smooth scroll correctly.
Honestly though, 43" is too big. I think somewhere around 36" would be ideal to limit the amount of head swivel. I use Regolith with a good deal of padding between tiled windows mostly to bring the windows out of the top corners of the screen so that my days don't feel like I'm at a tennis match.
Perhaps I'm just getting old, or I'm stuck in a specific social group?
I don't mean to belittle the author at all, Linux just feels like an absolute default to me nowadays for a developer, in the late 90s that may not have been the case, sure.
Windows: 47.5%
Mac OS: 26.8%
Linux-based: 25.6%
BSD: 0.1%
From the 2019 Stack Overflow Developer Survey:
https://insights.stackoverflow.com/survey/2019#technology-_-...I worked with plenty of Linux developers, and pretty much any piece of Bash scripts was full of remote code execution vulnerabilities. That strange love with shell scripts is so common among majority of *nixoids, it is impressive you call enterprise tools shitty in comparison.
Also, most software is deficient in some way. Software is hard.
Edit - also Linux hasn't really been the market for apps like that (not saying there's not shitty apps written for Linux though). There is now a janky app market for iOS (tablets) and Android as well though. I've seen lots of custom tablet apps for small businesses that are complete shit. It's not just Windows, Windows just happens to be the de-facto enterprise OS and thus attracts that scene.
If your a singleton developer is not so much of a problem going 100% Linux - working in the enterprise a lot of your actual work is going to be wrighting text documents and not code.
And dude do your self a favor and get a proper mech key board - your asking for RSI in later life
Especially if you're coming from MacOS, my experience is that it feels familiar, comes with all of the just-works, and as a bonus you can be in full control of your OS if that's what you want.
Softmaker Office/FreeOffice is an excellent and free replacement for MS Office. Has a ribbon interface just like MS Office, is fast, and does everything you would expect it to do just fine.
For development, if you don't want to go through the learning curve of vi or emacs, the JetBrains family of products is excellent. Otherwise you may want to try spacemacs, a "distro" of emacs.
Zeal is a good alternative for Dash.
Steam allows you to install a wide range of games, even Windows games, via Proton. You can see the list of supported games here: https://www.protondb.com/
Now, if you are not as hardcore as the person from this post, use Tilix (similar to iTerm2) rather than plain tmux.
Now... why Linux? because it's an OS where developers can do whatever they want. There's no limit. You can mess with whatever you want, not only with the surfaces exposed to you (APIs).
Going back to the XPS13 the Linux experience is not perfect.
* the mess with the HiDpi support and font systems. I often go from the laptop docked to a Usb-C hub to using my laptop on my coach. And my external display and laptop screen don't share the same pixel density. And it is a mess to switch from one to the other without hurting my eyes. Fractional scaling is blurry under Wayland or X in Gnome. Also some apps rely on Gtk for font rendering and thus react to GDK_SCALE environment variables but some don't. Some understand the Xft.dpi X server font dpi setting, some don't... I stopped doing fractional scaling of the whole display and just automatically detect which display is connected (thus does not work on both) and change the Gnome font settings
* Worse Battery life. I kept the Windows10 partition just in case and sometimes spend a bit of time on it and I have a much longer battery life on Windows10 doing the same things. On Linux I get 6 to 8 hours, when on Windows it is more between 8 to 10 hours. I think the main reason for that is the lack of off-the-shelf hardware accelerated video decoder in the browsers on Linux (I watch quite a few youtube videos). Yes I know TLP, powertop, etc.
* No driver for the fingerprint reader. It is a shame since the same model is sold by Dell with Ubuntu but the driver is not available. It is something I really like on Windows.
* Worse bluetooth experience. On Windows10, my bluetooth headset or speakers connect instantly, on Linux it takes up to 30 seconds and I usually have to manually force it (completely random)
* More instabilities. Usually after a resume sometimes bluetooth or wifi stop working and I need to reboot (once or twice a week).
* Lack of Wayland compatible apps. (I run Gnome) and some apps do not work and sometimes don't have Wayland equivalent: OBS is buggy on Wayland, polybar (status bar) does not work. I moved back to Xorg but I find it less responsive.
That being said I experimented a bit WSL on Windows10, it is nice but I am still not coming back to Windows 10. I don't like the OS advertising apps that I don't want and WSL feels a bit like a workaround you don't get the full experience, cannot start services, mount filesystems or launch apps with a UI seamlessly.
I guess most of your problems may be coming from ACPI (power management).
Linux software under WSL would consume even more battery life.
Firefox has support for VAAPI decoding on Wayland, but when I tried it a month or two ago it was still a little rough (and only supported h264). Its also not enabled by default.
An easier way to get hardware decoding that isnt buggy and supports all the accelerated codecs your hardware does is to use mpv. It has native support for youtube URLs if you have youtube-dl installed. Just make sure to use --hwdec=vaapi or set it in your mpv config.
I keep a Mac around for when I need to run Xcode or Photoshop but that's about it. And I boot into Windows when I want to play games.
Web development on Windows is much improved since 10-15 years ago when it was a total nightmare. Most of the open source languages along with Git Bash leaves me with a lot of the best of both worlds.
What I really miss is the way a Linux desktop wholly adapted to your workflow, nothing extra, everything working in harmony and enabling very high efficiency once you have momentum built up on a project. Tools like vim, gdb, and ssh all complement each other and fit neatly with the rest of the system.
After three years on a Windows desktop, it feels no better optimized to my workflow than it did week 3. There are still surprise shutdowns and interruptions by different notifications. A default Ubuntu install does some of that stuff but the level of configurability and transparency is much better on Linux.
The need for GUI applications is also more of a problem for web development since it often involves running multiple VMs and very different languages.
So now I’m just dual booting
WSL2 was/is not available yet for the stable branch of Windows, you need to use Windows Preview to access it. Try again in 1 - 2 months.
Oh well I guess I was warned it’s beta
I tried during lockdown WSL and was impressed by the ease of use and how fast it started but there are a few quirks.
It is not a full featured Linux OS at your disposal. I tried the Ubuntu 20.04 LTS for instance and systemd did not work preventing from starting services with systemd (there are some workarounds), I couldn't mount FUSE filesystems (lack of modules) preventing from mounting SSHFS, gocrypts volumes.
I don't know if these issues will be fixed in WSL2.
With WSL2, Linux runs in a VM, and behaves exactly as a Linux box, so Docker/systemd/FUSE run as expected.
I wouldn’t go back to Windows for any reason short of a massive salary increase.
Windows isn't _that_ bad but having to raise a ticket for someone to allow you to install software or read from a USB thumb drive was infuriating.
I also agree about not going back to Windows. If anything, I'm really close to dumping my MBP and getting an XPS 13" 9300 and going full Linux.
They also broke SSO on Linux for several weeks recently which was annoying, but at least they fixed it in the end.
Worse still, fixes tend to take a long time to land.
As an example, fractional scaling from NVIDIA cards is broken in 20.04 (what's new): https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/187340... and there is no fix in sight.
I like using as little resources for the base system as possible so I'm using Arch with awesome (WM).
For all my gaming needs I use vfio passthrough to reserve my GPU for my windows VM and get 90-95% native performance in the latest titles.
At this point everything “just works” for me on Linux (Using Kubuntu) and is super stable. I don’t game much, and proton has worked for everything I need.
WSL is nice when you don't have choice. Linux is actually the optimum choice for most developers.
https://www.amazon.com/dp/B001F42MKG/ref=cm_sw_em_r_mt_dp_U_...
I've been trying out Linux desktops since the late 90s and this is honestly the first system that didn't eat itself after an update.
Two external 4K monitors plus the laptop screen with no problems. Running VMWare Workstation to do my Visual Studio work and Linux native VS Code or JetBrains tools (DataGrip in particular) for everything else.