Preliminary

I am a software developer and I have been using Apple computers since 2012. 2012 is also when my professional career had started.

It was always Macbook Pro but with different generations (2012, 2014, and 2015). I also have an iPhone, an Apple Watch, and an AirPods. I am saying this in advance so you can have an idea about how deeply coupled I’m into the Apple ecosystem. Once you go deep down that much, It is becoming much harder to break your chains. That perfect harmony between iDevices. Answering your calls, replying to messages, copying and pasting across devices, etc. You know what I mean.

But from a development perspective, at some point, I realized that the only tool that converts my Macbook into a development machine is homebrew:

A third-party package manager to help people act like and install packages like they are using a Linux operating system.

Well, this explains a lot by itself. So, during the past few years, I started to think about switching to Linux. In fact, I did switch.

But not in a proper way…

The Proper Way

TLDR; The proper way for me was switching to Linux without keeping the Macbook.

Why is that? Because every time I tried to switch, I knew deep down inside that I always can go back to macOS. Just format the drive and re-install the macOS. Because of this so-called relief feeling, I never was able to concentrate on using Linux as a daily driver.

Trying to peer my Bluetooth keyboard to Ubuntu: Did it fail the first time?

Forget it. The whole Linux thing is crap. It even is not capable of connecting my keyboard. And consider using this OS for my job. No way!

This and a bunch of other relatively small issues. I never tried to fix the problem. I always gave up at the first obstacle I faced. I was always thinking like there should be no problem not at all. And as a developer, now I feel ashamed because of this approach. I earn my life by solving problems…

Say Hi to my new Thinkpad

I always knew that if one day I leave my Macbook and migrate to Linux, Thinkpad will be the laptop that I will be using.

And 2 weeks ago, I found this Thinkpad T14s Gen 1.

After days of hardware and compatibility reading, I decided to buy it. I sold my Macbook Pro (2015) to the same store that sells this Thinkpad and I paid some extra cash to close the gap. I was tired of so many cables coming and out around my computer so I also bought that CalDigit Pro Dock to organize my cables.

Honestly, I did not expect this much elegance from a non-Apple laptop. I loved it at first sight when I unboxed it.

It is thinner and lighter. And that keyboard.

Spoiler alert: I am barely using my mechanical keyboard(s) since I bought this laptop. And for the record, I do love my mechanical keyboards. The blue switch is my favorite. I did not touch a laptop keyboard for years. At the office, at home, on vacation: I always carry a mechanical keyboard wherever I go.

Hello Linux

TLDR: After a few tries I ended up using Ubuntu 20.04. Here is the neofetch:

Fingerprint

It is just working great. You can’t imagine how I was surprised when the fingerprint sensor just worked out-of-the-box with Ubuntu.

Desktop Environment

I am happy with GNOME. I did not tweak too many things to make my Thinkpad look like macOS. That was what I was trying to achieve on my previous attempts.

I need to configure dozens of things so my Linux environment looks like a macOS.

No. What is the point of migration to Linux then? I love my operating system as it is now. Here a few screenshots from my Desktop:

Launchpad also looks cool:

Karabiner Elements

Probably the best program I ever installed on my Macbook. I am a big fan of the Modern Space Cadet article from Steve Losh. I map my shift keys to parentheses when pressed alone. They act like regular shifts when pressed with a key. This is how I use my computers since 2013. As a replacement, I found Dual Function Keys. I compiled it and generated a config file to achieve Better Shifting. It is working great.

AirPods (Gen 2)

It is working without any problem as headphones. I also was able to pair it as the headset after tweaking some Bluetooth configs but I think it falls to half-duplex mode from full-duplex when activated as a headset. So, sound quality gets worse. No need. Thinkpad’s mic is pretty good for online meetings. So I decided to leave it as just headphones.

It automatically connects when I pull it out from the box and tapping gestures also work. I can stop and play the videos/songs by tapping my ear. That is more than enough for me.

iCloud Calendar

My wife is using a Macbook Pro. She also has an iPhone and I do have another one. So we are using the iCloud calendar with sharing options a lot. And being able to connect my iCloud calendar made me happy so much. With 15 mins of work, now I can send and receive events and notifications right from the default GNOME Calendar. Great.

Time Machine

You can write a simple rsync script and schedule it with a cron job. There you go. Simplified Time Machine. Or, you can go ahead and install Timeshift.

It is just like Time Machine. Select what to include and what to exclude. Select your backup folder or external hard drive. Schedule your backups. And you are good to go. You also can restore a whole system from Timeshift snapshots. I tested it. It is working.

Trackpad Gestures

This was easy. I just installed libinput-gestures and configured it for myself. Now I can use three-finger gestures on my touchpad.

iStat Menus

I have been using that app for years. It was like some default built-in app for me. There are some great replacements for this in the Linux world. Probably the most configurable one is Polybar. But I just installed Vitals gnome extension. It is quite nice and simple. No distraction:

Space to File Preview

in macOS, we can have a quick look at any file by pressing Space. This is much quicker than opening the file, checking its content then closing again. I found Gnome Sushi. No further word is needed. It has the same functionality.

CalDigit Pro Dock

It is officially supported only for macOS and Windows. But speaking for Ubuntu, all ports on it worked without any config or driver installation.

Problems

Of course, not everything is flawless. Some parts are missing. I am pretty happy with this migration so far but here a few cons:

  1. 1920x1080 is not even comparable to the Macbook’s Retina Display.
  2. Since scaling is another problem in the Linux world, I can’t use my 27 inch 4K Display properly.
  3. I probably will end up selling my 4k monitor and buying a Full HD IPS monitor.
  4. Cmd Key! After 8 years of macOS, It is really hard for me to not having a CMD key. There is no direct replacement for the CMD key in Linux.

Closure

It feels natural. Yes, I really thought about that word while writing this. Yes, the display is not so great. Yes, all those fancy apps are being developed for mostly macOS and sometimes Windows. It still feels strange when I have to clone, compile, and install a program to use on my Desktop. But the ultimate feeling for me is natural:

It is like this whole Linux ecosystem was meant to be a development environment.

I will be sharing my future experiences as I discover new things or problems in the Linux world. Let’s keep in touch.

Thanks for reading.