Hacker News new | past | comments | ask | show | jobs | submit login
Linux on the Desktop as a Web Developer (nolanlawson.com)
86 points by todsacerdoti on May 10, 2020 | hide | past | favorite | 74 comments



I've worked as a web dev on Linux for nearly 15 years (most of it Ubuntu). My day job requires that I work on Windows 10 and I'm sorry to say this, but from a developer's perspective it does feel like an inferior user experience. To cope I've tried the WLS, but it didn't really do it, then I was able to somewhat cope a bit with Cygwin. Still it's not the same. I miss the extra desktops. I miss the ability to install a proper tiling window manager with sane keybindings (I use i3 so please don't even mention Power Toys). I miss simply configuring stuff with simple text files, instead of pointing and clicking to open layers after layers of windows to simply change one value, which can also turn even the simplest tutorial into a headache (try installing a wsgi server on IIS). I also miss having my configuration respected without agenda, rather than seeing some applications somehow capable of vetoing my choice of a browser, or my language preferences. I miss ubiquitous utilities that are just sort of expected to be there by anything you install, like cron. Oh, how I miss the shell (please don't even utter "PowerShell"), would you believe that I even miss Bash as a language after trying batch files?

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?


> ..job requires that I work on Windows 10.. how I miss the shell

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.

https://multipass.run/

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.


You can just run i3 (or any other desktop environment) inside WSL with X server integration. That's similar to what I do.


Have you tried AquaSnap or bug.n? There's also the possibility to run i3 on Windows these days.


Forgot to mention, there are also several AHK scripts that mimic i3 that are quite nifty and then of course Windows has had virtual desktops for years.


"Always on Top"

The world would be a better place if people could do this on their work machines.


I'm a backend developer but after switching for Windows to Mac (and from C# to Go) about 8 years ago, I recently (in the last 6 months) adopted an almost exclusive Linux-only approach. My MBP has been great but ever since the Touch Bar and finicky keyboards that kept needing repairs from authorized retailers, I started looking more and more at Linux. All the production code runs in Linux and, while Docker on Mac is pretty good, it's pretty heavy (VM) compared to actual Docker on an actual Linux device.

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.


Off topic, but if you're willing to share, I'm curious about your transition from C# to Go How are you liking Go compared to C#?

I'm wanting to learn a typed language good for backend and trying to decide between Go, C# and Java.


I wrote a blog post years ago on the subject of leaving .NET: https://blog.jonathanoliver.com/why-i-left-dot-net/

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.


You should try 1password-linux from snap. It's essentially an Electron app but it works fine for me.


If you’re open to swapping password managers, I use bitwarden. It’s solid with broad availability.


I tried Bitwarden years ago and still have an account. It's very much on my radar. I installed the desktop app last week to try it out.


If like me you have a browser opened at all time, on Linux you could consider using the 1Password browser extension even needing a password not web-related.

I use 1Password for Firefox on Linux and it works flawlessly.


That's exactly what I'm using. You are correct that it works flawlessly. In some cases the experience is actually smoother than the native 1Password Mac app. There's a few small bits around working with items and managing multiple vaults that still has some rough edges compared to the native app.


I've been using a Dell 13" Ubuntu 4K laptop hooked to a 43" monitor as my main work web development system for a year and a half. All of my co-workers use Macs.

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.


I use LXDE at the moment, primarily because it gets out of your way. I'm going to give regolith a try - it looks pretty cool (and by that, I mean functional). Thanks for sharing!


Do you mind to share the model of your 43" monitor? I'm looking for a setup like yours, but I'm not really sure which monitor fits the purpose. Thank you!


I've been using the 4K 43" Viewsonic VX-4380 for several years; it's been great. It uses flicker-free backlighting unlike the Dell 43". Unfortunately it appears COVID-19 has disrupted the supply chain for these at the moment. Keep in mind that many 43" 4K displays use TV-like BGR subpixel layout instead of RGB, so subpixel antialiasing for font rendering in general won't work unless you either switch your OS to BGR or disable it. (Windows and Ubuntu/Gnome, but not Mac OS, have a way to set BGR layout. But all three let you disable subpixel AA.) I always disable subpixel AA anyway because my eyes can see the color fringe when it's enabled and I don't like. Another poster said you can use a TV instead but I don't recommend this. Using a TV over HDMI can lead to color quality issues unless you are certain your model of TV won't be affected. (Many TVs use a compressed color signal because it's good enough for watching TV and movies but certainly not good enough for rendering detailed artwork). And TVs can have overscan issues (edges of the screen image missing), image ghosting issues, etc. A TV works OK for fullscreen gaming or for a powerpoint but isn't necessarily the greatest as a general purpose monitor.


I should have been more precise. It is a 43" 4K TV acting as a monitor. Its a cheap Vizio I bought a few years ago after a bit of research and luck showed that the model that my local warehouse store (BJs) had in stock offered 1 out of the 5 HDMI ports as "raw" (it bypassed the internal image processing system in the TV). Its been great - its flicker free and doesn't have weird artifacts I've heard other 4K TVs have (had?) when used as a monitor.

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.



A 4K TV does the trick too.


Does anyone else find these sort of articles strange? "Windows on the Desktop as a Developer" feels like the unique/odd case to me.

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.


I use Linux as my daily driver, and I would agree that unlike the late 90's, it's a fully viable option, for sure. Absolute default for everyone, though? Doesn't seem like it. Not sure if that's what you were saying or not, but Windows is definitely still the frontrunner by pure usage.

  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-_-...


There's a large amount of developers making shitty enterprise tools on Windows. Usually done with the whole VS/C# stack. Anyone making anything for the web or doing anything cross platform is likely using MacOS or Linux.


Just loved your attitude. /s

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.


There's a massive market for one-off custom Windows apps fulfilled by short term contractors and consultancy firms or in-house programmers. It's a thing.

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.


Well, not everyone is destined to work on AWS. Somebody actually has to make use of the larger project for a mom&pop stores, e.g. make small tools.


Bad codes and developers are found in both Windows and Linux.


Yes! I was hoping the point will strike parent harder in the likely case he did his part of shell scripting.



Realistically your "PC" is just a way to get a terminal on which ever system your developing - the only downside is you wont have easy access to office/outlook. Wat MS should do is just ship a proper x server with widows

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


For Linux on the desktop, I can't say enough good things about ElementaryOS. It's beautiful, defaults are good, compatible with Ubuntu.

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.


I would be happy recommend ElementaryOS to anyone. I used it for a few years before moving to Kububtu (with help theming from /r/unixporn). It looked nice and worked well imo.


elementary OS has been my go-to ever since v0.2, especially in a combination with ulauncher (Alfred alternative). They're an irreplaceable part of my workflow.


Gnome 3.36 is one of the best releases of Gnome. Just switched back from XFCE. It looks polished, has better usability and performs way better than previous releases. Much of the HiDPI related problems (4k resolution) I had went away too.

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).


I run Linux (Arch) on my personal Dell XPS13. I run Ubuntu 20.04 in a VM at work to do NodeJs/Springboot (backend) development and even in a VM, especially for node, the experience is better than colleagues running bare metal Windows.

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 use bluetooth audio on Linux and I don't have problems with it, but I do not use a laptop. I do not often suspend, resume my system.

I guess most of your problems may be coming from ACPI (power management).

Linux software under WSL would consume even more battery life.


Linux apps on WSL1 shouldn't consume such battery life.


> lack of off-the-shelf hardware accelerated video decoder in the browsers on Linux

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 switched to Ubuntu about 6 months ago and have been shocked at how well it works. It's actually good, not just barely-workable-if-you-are-a-zealot.

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.


After years of Linux and a little OSX I have had to switch to Windows for the last few years.

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.


I’ve found it much easier than Windows. Can never get power shell to do what I want. Eg the other day a google QuickStart guide required setting a .sh as executable. Couldn’t figure that out. Been trying to install WSL2 for a month+ now.

So now I’m just dual booting


WSL2 will be available in the Windows 10 May 2020 update that should be released end of May.

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.


I enabled slow ring insider preview and that seems to have broken both updates and windows store app installs/updates completely/permanently. Probably gonna have to nuke it. Bit annoying - need windows for Netflix and gaming, Linux for coding and browsing


This is understandable, since binaries in WSL run directly on Windows, with no virtualization/emulation, except for Linux syscalls.

With WSL2, Linux runs in a VM, and behaves exactly as a Linux box, so Docker/systemd/FUSE run as expected.


The systemd problems remain in WSL2 as they same custom Microsoft init system from wsl1 is still used. There are workarounds however


> Been trying to install WSL2 for a month+ now.

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.


Slow ring insider preview. Basically broken all update functionality including App Store updates. Can’t even go back to non previewer

Oh well I guess I was warned it’s beta


I’ve been using Linux (Debian) on my work laptops for over a decade now but corporate IT is finally forcing me to switch to Mac for bullshit policy reasons. It doesn’t help that Zoom is buggy and the VPN client we are forced to use is Mac/Windows only. :(

I wouldn’t go back to Windows for any reason short of a massive salary increase.


For work I've got an Arch-based desktop and a MacBook Pro 15". I'm almost exclusively on my desktop (lots of CPU horsepower and tons of RAM) and I use Zoom about 5-6 hours per day. I used the Zoom 4.x binary as well as now the 5.x binary versions that they offer. The experience has been solid for calls, sharing my desktop, etc. I'm curious what kind of issue you experienced.

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.


Zoom works fine except the 2 times I tried to give a presentation to our extended team of ~40 engineers at which point it locked up my session and left a zombie connection behind so I couldn’t rejoin. Having that happen twice when some important people were on the call naturally led to “Zoom works for everyone else except you, and you are using Linux so ...”.

They also broke SSO on Linux for several weeks recently which was annoying, but at least they fixed it in the end.


The last time I worked for a company with a draconian corporate IT policy the entire technical team in our division had a Windows laptop for email/intranet and a machine of their choosing for actual work.

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.


My frustration with Linux (Ubuntu in particular, maybe a distribution with ZFS solves this issue) is that upgrades tend to be like Russian roulette. You have no idea if something will go wrong and reverting tends to be a pain.

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.


Just my 2c: I've been happily developing web apps and gaming on Linux (via windows VM) for the past 4-5 years and dread the thought of switching to Windows or Mac. I'm fortunate in that I run my own business so I get to choose all of my tools and tech. Haven't come across any workflow show-stoppers but I'm not working with legacy apps or systems so YMMV.

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.


I’ve found Linux to be a really good machine for development. Windows with Cygwin is a good mixture, but windows file locking, and the lack of bash (and some tools) really have made it a pain when developing back on Windows.

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.


Have you tried WSL (Windows Subsystem for Linux)? After many years on Mac and then Linux, I switched to Windows and it's actually fine.


I worked on Windows for two decades and tried WSL1. Windows is not super annoying but as a developer all my tools were actually Linux native or cross platform so one day I just cut the middle man and switched to Linux. It wasn't such a big leap but my productivity definitely increased.

WSL is nice when you don't have choice. Linux is actually the optimum choice for most developers.


Absolutely agree with your last two sentences. WSL is a nice stop-gap but I'd much prefer the real thing.


Having been on Linux the last 6 or so years (with Mac laptops sprinkled in), I’ve been very pleased playing with windows again. So much so that I’m trying to daily drive it just to know what it’s like anymore. Other than a few minor annoyances with WSL2 (such as systemd) it’s been going surprisingly well.


I haven’t yet, but have heard good things about it. I’m also really looking forward to trying the new windows console.


Like OP, I switched to a Dell XPS from Mac. First with the pre-installed Ubuntu, then Xfce + Debian and now Debian + i3. It comes with headaches. Ubuntu (16)'s window handling was sometimes buggy for me. Xfce was fast and worked very well, but I wanted something with better multi-monitor support and even more minimalistic. i3 fits that bill nicely. I would not want to go back to Windows, Mac or Ubuntu for that matter, because they all force their agenda on you. (Ads in my start menu? No thanks. iTunes / Garage Band / many other apps I really don't want / "Sign into your Apple account"? Also, no thanks.) Plus, like OP, the shell on Linux is best when the server OS is the same as on the dev machine. It's not perfect, but I really wouldn't want anything else anymore.


Did you mean Ubuntu 16 (from 2016)?


Yes. It was a while ago.


As another weirdo who prefers a trackball, I fail to see how anybody can stand to use a normal mouse.


Any recommendations? I've been eyeing the wired Expert Mouse from Kensington



I can't recommend Manjaro Linux enough. It's the desktop system that got me off of Windows due to the sheer ease of installing software and maintaining a stable system, which I've done now for 2 years on 3 different boxes.

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.


Running MX Linux (Debian for power users) on my work laptop as a dev in the .NET ecosystem.

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.


Well, WSL2 already fulfils this and allows me to use the same Windows standard defaults and using Linux in a VM with access to its file system in a single click install without rebooting back and forth with a Ubuntu install.


ImageOptim conveniently lists available alternatives for other platforms: https://imageoptim.com/versions


Author is creator of Pinafore https://pinafore.social/. An amazing fast and accessible pwa client for Mastodon.


I’ve tried a few Ubuntu distros as of late and truthfully they’ve all been pretty impressive. The last issue I really have is fractional scaling on a 4K.


I work a lot in CentOS via VirtualBox. Not quite have-your-cake-and-eat-it-too, but close.


Nolan has done a lot of work on PouchDB.js too. That is a pretty great bit of software.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: