The distro (Linux version) used in this article is Ubuntu. All further references to Linux in this article is referring to Ubuntu version 20.04.
I’ve previously been evangelizing that Linux does not work if you value your time. I’ve had a lot of failed experiments trying to move to Linux as my go-to desktop in the past. First time I tried it? Probably around 2005. Compatibility issues, lack of quality in general, productivity quirks, and lack of software support were the main causes for my headaches. I was at a point where I practically disregarded Linux completely except for servers. So what happened? Can it be used as my favorite workstation as a picky developer and business owner in 2022? Early signs tell me it’s doable. I am extremely happy with my setup at the time of writing this. Here are my thoughts on the process and some discussion around ‘give and takes’ towards my optimal computer setup in 2022.
Back to basics: What do I need?
I categorize myself as a picky, quality-oriented, productivity-driven, and in some sort lazy power user. By lazy I mean I require my shortcuts to work, I can’t stand repetitiveness, bloat, or slow procedures. I also consider myself fortunate that I have experienced quality, which means it’s extremely hard to go back.
“Somebody who has never experienced quality always chose quantity”
Since I was introduced to the Mac by a Swedish ex-colleague back in 2009, there has been only one option. I loved the quality, the robustness, and the esthetics. The feel was just right. I guess I bought 100% into [this old commercial by 37Signals and their praise of the Mac.](this old commercial by 37Signals and their praise of the Mac.)
To me, this video represented something bigger than an operating system, a programing language, or a computer brand. It was a movement. After working on the Mac for many years, my requirements stood clear. A strong terminal that supported all kinds of programming languages and frameworks. I got used to a system that was free from daily updates and security nagging to tamper my attention. And on top of this, the hardware felt flawless and it never crashed.
I need a distraction-free system with as little resistance as possible. Coding is difficult and mentally draining enough as is.
In addition to the terminal, a few other tools come to mind as nonnegotiable. A great IDE, screenshot handling with annotations, a powerful email client with multiple IMAP accounts, synchronized calendar, and more. And a smooth mouse cursor experience!
What started the move?
Sluggish apps running in the browser - In late 2018, I bought the new Macbook Air the moment it was introduced. At first, I thought the verbose praise from Cupertino could make this my main machine for many years to come. Having seen pictures of Mark Zuckerberg working on a Macbook Air, it should do the trick for me as well. I was wrong. One should have thought it was running web servers and heavy IDE work that should cause the system to crumble. In reality, it turned out to be web apps running in the browser. Heavy JS-dependent web apps like Facebook Business, Mailchimp, Google Ads, and accounting software made my working environment terrible. Even connecting to a 27" monitor made a severe performance impact. As time went by, my motivation to do work on this machine got reduced to a minimum. In hindsight, this is probably the least attractive Apple product I’ve owned. Compared to my 2012 MBPro that still runs superbly after ten years, it feels weak.
Gaming and shared hardware - After re-entering the gaming world in 2018, it got clear to me that this hobby is here to stay. Especially games like Dota2 and the latest Flight Simulator. Gaming a night or two during the week is a great way to unwind. As Windows is the desired option here, it led me into maintaining two desktop setups. This was not optimal as I then depended on two sets of each peripheral, as well as two monitors. For a short time, I tested a USB hub to share a mouse/keyboard/headset and monitors between the Mac and the Pc. Not sure why, but it did not stand the test of time. Also, possessing two setups was not optimal for office space either. I wished I could keep one setup with one monitor to rule them all. The monitor I was using at the time was a super ultrawide Samsung 49" running at 120Hz.
Pricing of new Macs relative to utilization factor - In late 2021, Apple introduced a huge shift by introducing their new M-lineup of processors. These machines killed it in almost any benchmark. They also rolled back on a few bad decisions made for the Macbooks during the 2015-2020 period. Out of the box, this looked like an immediate buy for me. Luckily, I gave it some time and changed my mind. Why? Let’s say I bought a Macbook Pro at 3500$:
- I would still need to maintain/upgrade my gaming computer.
- I would still experience the share peripherals headache.
- I would pay a huge amount for a screen that might not be utilized as much as it deserved.
- I would be traveling with an extremely expensive machine, introducing all kinds of risks. (I bear a strong paranoia about my belongings getting stolen)
- I would be traveling with a bigger machine.
- Why do I normally travel with a laptop? Not to do deep work, but to be able to restart a server or some other minor task if an app goes down. It’s for emergencies. Nomad work/life balance is for losers.
- I would try to use this new powerhouse of a machine for gaming as well, which probably would have led to disappointing results.
Given that I now know there have been excessive supply chain issues delivering these new macs due to the global pandemic (mainly), I am glad I held back.
What about Microsoft Windows then? With WSL and everything! - Long story short, Microsoft Windows 10/11 with WSL did not deliver for me. I spent about two months trying to make it work. The final blow was the filesystem and how that works in the terminal. I also felt it was slow. Too slow for me to handle.
Main factors making Linux possible this time
Modern browsers that work regardless of OS - The move away from Safari was easy. I don’t know why I held on to it for that long. Thanks to the modern password managers found in Chrome and Firefox, the transition was smooth. Suddenly 90% of my “software” is available after just downloading a browser. At the moment, I ride on Firefox.
Visual Studio Code - I made the move from IntelliJ to Visual Studio Code on the Mac recently, which is currently also supported for the major Linux distros. The main advantages are an enormous marketplace for syntax plugins, autocomplete tools, and much more. It’s also blazing fast. I also find the degree of customization available now to be good compared to the competition. Compared to IntelliJ, it’s also free. Microsoft pours a lot of attention into this project at the time being. Fun fact: One of the reasons I could not stand VSC in the past was the folder tree presentation. I was not able to differentiate the tree hierarchy completely, and it made me nuts. Luckily there is a setting in the Preferences pane to take care of this. I was probably not alone. Lovely.
Most non-coding work is now performed in the browser - Slack, Discord, Facebook Messenger, Basecamp, Spotify, and accounting software are what come to mind. Finally, the numerous important small oddities that have failed in the past seemed to work this time. Here are some of them:
Small hurdles, big triumphs
Nvidia RTX2060 5140x1440 resolution running 120Hz - At first, I did not manage to activate the proprietary Nvidia drivers. Turned out it was this ‘Safe boot’ flag in the bios that was blocking it. It’s easy to disable from the bios, and voila. It works.
Mouse acceleration - This is damn important to get right! If you’ve tried both Windows, macOS, and Linux, you might have felt a small difference in the way the mouse works. It’s subtle, but there is a difference. For me, this needed to be fixed as Linux is the worst right out of the box. I made it work with a tool called gnome-tweaks. It lets you change the mouse acceleration profile. Set it to flat and it feels more or less like Windows. This is the section where Windows is best. The mouse just feels extra smooth and crisp in Windows.
Email client with support for multiple IMAP accounts - Not much to say here, but after testing a handful of clients and web services, the best one for me is Mozilla Thunderbird. It even comes pre-installed with Ubuntu.
Screenshots and freehand markup on top of those - You might think this is a small one, but oh my it makes a big difference. Being used to the fabulous ‘Preview’ in macOS, I have been pumping out annotated screenshots from everywhere daily since about 2010. I found this sweet little screenshot app for Linux that I now mounted to my Print Screen Button on the keyboard. It’s called Flameshot. You’ll find it in the Ubuntu Software application.
Github desktop - 95% of the time, I am fluent in using Git commands from the terminal. However, I sometimes get into situations where I prefer using the Github Desktop app. It gives me a kind of confidence when I am unsure if I am doing the right thing. It’s also easier when ignoring or discarding changes in multiple files at once. A quick google helped me set it up from the terminal.
The known sacrifices (so far unresolved, partly unresolved, or workaround identified)
Window management - Working on a laptop or a single screen demands a lot of window changing, resizing, swapping between apps, and so on. I was worried that I would not manage this as smoothly on Linux as macOS. Seems like it was a non-issue. Working on a desktop with a huge screen like this 49", I keep the important windows open at all time, and there are hardly any need to change/resize. It’s even better than expected.
Linux caps lock delay - I’ve always been writing capital letters using Caps Lock and not Shift. When using Caps Lock on Linux, I usually end up writing words like THis or THis or like FOo BAr. This is due to a small delay in the operating system. Quite annoying. I am not alone, just read this. It’s so strange the Ubuntu guys won’t deploy a native fix. Workaround? This is one area that I am willing to unlearn to learn. I am changing all my usage of Caps lock to Shift. If I don’t make it, I am willing to remove the Caps Lock key completely to force myself into learning it.
PDF handling - What I need is of course a quick reader, but also a way to sign those with a digital signature just like I’ve done in macOS for the last 10 or more years. Solution or workaround not in place yet.
Adobe Photoshop - Seems like I need to sacrifice this. There seems to be no way this is coming to native Linux shortly. Maye a web version? I still have my Mac laptop with PS, as well as my office computer with PS. Photoshop is best for image manipulation as well as advanced workflows. For minor image related tasks, like just cropping images, etc. I’ve got the online web app called Pixlr to the rescue. It’s one of the biggest sacrifices, but I am willing to live with it.
Mac keyboard - I am currently writing and working on this gaming keyboard. It’s no way near as good as the native full-size Mac keyboard but it works. I will probably get more used to it with time.
Microsoft Office - As with Adobe Photoshop, this seems like a sacrifice I need to live with. Well, the workaround is to open files on the laptop, convert, and then continue working. I’ll need to look into workarounds. When I need spreadsheets or keynotes these days, I head over to Google.
iMessage on the mac - A lot of non-Mac users are not aware that when they receive text messages (IMessage), a lot of them are written on macs and not iPhones or iPads. This is an extremely handy feature, but I am willing to swap it out with FB messenger. Normally I just communicate with a handful using this service, so I might as well consolidate on Messenger.
Google Drive native app - I find this very useful, so I need to investigate possible options. The feature I need from the native app is the option to sync only selected folders. I assume this is not supported in the Linux versions? I will report back when I know more.
Emoji keyboard shortcut - I would love to get this supported on Linux. Need more time to investigate if there is a solution.
Activity monitor - Regardless of OS, some applications do crash. It might be an application, a process, or something that hangs. Historically I find it better to see this in a list as it’s shown in Activity Monitor than to grep processes in the terminal. There might be an alternative. Not found yet.
The unknown unknowns - This is an interesting category.
The real issues show up during authentic work, not during acceptance testing.
Additional wins and feel-good factors
The free and open web - By going all-in on a Linux solution, I am also partially saying no to app-stores (both Apple and Microsoft!) and yes to the free web. I am a firm believer in the individual creator economy, and the ever-growing monopoly of app stores is working against this. If you make an app, it should be optional how you decide to get paid. This is a big discussion.
Money - I probably save > 4000$ on this choice. By combining work and gaming setup, and on top of this not buying the 3500$ Mac, it’s the most mustachian way to go.
Experiencing a broader technology spectrum - I love going completely broadband on the tech spectrum. This is the best way to experience and compare usability, design, and quality. Pick and choose the best from all. Don’t settle.
The copy/paste with the middle-mouse button! - Just love this.
Ending notes - Tell me your setup story!
Have you experienced a similar journey within hardware and software? Are you picky about your setup? Do you have any solutions or suggestions to any of my issues that are not yet resolved? Let me know, and let’s talk! I love this subject.