This was first written in summer 2018. There is section for feelings after 1 year at the end of article
I first installed Linux on my home PC around 2001 New Year’s. At first I used it command line mostly, but then desktop also, and I used Linux as my main OS for 7-8 years (often side-by-side with Windows). Then I switched to Apple products at end of 2008.
In 2000-2010, Linux desktop experience was a mixed bag: lost of hardware issues, inconsistent UI/UX, but if you can tolerate a little, it was usable. Many things are often best done in terminal and development experience on Linux has always been good.
Now, I have been using Apple for 10 years. Last year I bought a Windows PC for 3D/VR/heavier operations. Still, for most of my development work I use my MacBook Pro 15″ (late 2013). It is going to be 5 years old soon, still usable, although it’s battery has expanded, fans are loud, especially in summer it gets too hot and is unusable with 4k monitor.
When new MacBooks came out in July, especially with 32GB memory, I was almost ready to get one. However, then I got idea of trying to work on Linux by installing it to my desktop PC.
Installation and problems
I freed some space from Windows SSD, got Ubuntu 18.04 live installer, put it on USB stick, disabled secure boot and installed. Installation process has not really changed since early 2000’s and it was over in 5-10 minutes.
Then some problems started. The Ubuntu nouveau driver apparently wasn’t working with Nvidia GTX 1080 Ti, and I just got blank screen instead of login screen. I’ve had this often before 10 years ago, so I just went to console with ctrl+alt+F keys and logged in from there. I have been using WiFi USB stick for internet, but then second problem: it’s not recognized.
Ah, the nostalgic deja-vu from 10 years ago again!
Searching web with MacBook I learned that my USB WiFi is not really supported and I should download the latest Nvidia driver. How do you download without internet connection? The easiest way was then to take a good old cable and download the driver. Luckily my junk box happened to have 10m cable!
After some steps I got my login screen showing, and I was in graphical Ubuntu.
One of the best things about Linux is it’s configurability. You can pretty much tune all things or even modify the underlying open-source software and do whatever you want.
The default Ubuntu experience is quite nice these days. Software mostly just works, multiple monitors worked, and generally things go as you would expect. Except for USB WiFi and Nvidia GPU, all the hardware I tried worked out of box as expected, USB microphone, web camera, etc.
After using it for about a week, I had to change about few things. There are some GUI option oddities such as you can only set 1-15 minute screen locking (I want 30 mins or so), or screen/text scaling has options only 100%, 200%, 300%, 400% (I want about 120% with 4k monitor). But everything is still settable with
gsettings set ... command line or
unity-tweak-tool. But you won’t know the commands so need to search it.
I was able to get my usual development environment, node, ruby, python into very nice shape in less than hour. Nodenv, rbenv, pyenv make things easy.
Installing databases, PostgreSQL, MySQL, mongodb is also just matter of running single command. Then setting the password logins etc.
I code in Visual Studio Code mostly these days, or vim/neovim when in terminal, and that part just works as expected (I think I had to change some OS level file watcher/notification settings related to VSCode).
Two things I struggled with was with tensorflow GPU and blender GPU rendering, but to be fair, they usually require some struggle with other OS also, like installing cuda and putting things on PATH, etc. Again, just a matter of web searching.
There is even Steam for Linux and it does have fairly large amount of titles available. This has changed greatly last I used Linux desktop 10 years ago.
The experience is really smooth, fast and snappy! Apps open fast and consume little memory. This is also because of the performance of CPU.
Basic stuff works. Web browsers work, of course. Music and videos play well. Software was also able to connect to shared home libraries from NAS, etc.
Development environment is powerful, and things like docker work without freezing.
I like the command line experience better in Linux than on macOS, mostly because macOS is FreeBSD based and the flag order is stricter and for some things the command line flags are different from what you would use on your (linux) server.
Synergy is an app that allows you to share keyboard between computers and OSs. I have had problems on synergy between Windows and MacOS, I guess because US/JP keyboard differences. Between Linux and MacOS, it just worked much more smoothly!
What I’m missing or not too happy with
- Window Manager out of box experience. Something related to snapping and positions felt strange some times. After trying i3 and so on, I settled with adding Gnome extensions to help with window management. Linux at least allows you to configure and customize fairly easily everything related to this.
- Password Manager. I have been using 1Password, but it’s not available for Linux. Considering putting Lastpass, KeePassX etc, but for now, since I’m sharing screen with Synergy, I just use macOS 1password pretty seamlessly.
- Software for writing. I really like Bear, Day One and Ulysses for macOS, but there does not seem to be similar cross-platform software available. I will be looking if some has an API or email integration to even push stuff there.
- Software for graphics. MacOS has really Adobe suite, Sketch, screen recording and video editing software.
- Terminal. Terminator is very good, but iTerm2 has some advanced features and much better shortcuts. However, this was mostly fixable with configuration.
- Inconsistence between apps. MacOS has usually consistent experience between apps, but when you open rarer app, you might get ugly buttons and inconsistent behavior in Linux.
- Backups. Yeah, I can just rsync and so on, but I want something as easy and seamless as time machine, which has saved me number of times.
- WiFi. I’m still looking for some USB WiFi that officially supports Linux.
Overall Linux works wonderfully these days, and is easy to set up. Of course it really depends on what you do. It is especially nice for developers, but things like writing, photos, design has much more nicer software available on Mac than open source Linux. Let’s see how long I can keep using and finding workarounds.
* Update 1 year later (2019/06)
I have been running Linux ever since. However I mostly use MacBook as main. When I need to do something heavier, I can switch easily to Linux by just changing where the monitor is connected.
Biggest annoyance on those times is that ctrl and command keys are switched for shortcuts in Mac and Linux. (e.g. CTRL+C vs CMD+C). But I get used in matter of minutes. Other than that it’s just matter of syncing files, or doing git pull.
I have been doing writing and graphics/design on MacOS, for password manager, I just figured to use KeePassXC and dump my 1password database there every now and then, which is not so bad.
I’ve given up docker things on MacBook, since it just makes my fans shout, disk become full and freeze. So when I use docker I just switch to the powerful desktop Linux machine – great experience and performance. Same for things like blender and data.
So, still using…