A few years ago, I wanted to make the switch from Frontend to Backend. One day I fell down the YouTube rabbit hole and (partly) watched a few tech talks. I realised that many of the really good talks were held at Clojure conferences. I looked into it, and decided to learn Clojure.
The lust for learning a new programming language often times comes from the sheer boredom of your old work, so you also want to redo part of yourself. After a bit of research, I found the book called "Clojure for the Brave and True", and absolutely loved it.
After a few weeks however, I gave up. The book wants you to jump all in and learn emacs at the same time as well, since it provides, according to the book, the best environment. I really liked the idea, but abandoned the project also due to the lack of Clojure positions for Juniors in my area (Berlin, Germany).
A few years later, today, I started to learn Rust and got excited about the whole ecosystem, community and possibilities. I read, wrote and programmed a lot in Rust during the last few months. So much so that I got a Rust position at a company starting August (yay!).
But, as I digged deeper and deeper into the language, and watched tutorials, I figured: I can't do Systems Programming on a MacBook Pro running macOS. Don't get me wrong: Once you mastered a skill, it doesn't matter where you operate it on. Also a different machine doesn't make a huge difference.
Although, I might disagree a bit with that. Take loosing weight for example. Just cutting down a few kcal per day won't make a huge difference. Your fridge has to look completely different so you are less tempted to eat all the bad things and naturally will nurture your body in a more healthy way.
I remembered the "Clojure for the Brave an True" concept, and wanted to apply it to my Rust environment
This is exactly what I aimed for when I ordered a Thinkpad X1, with the intention to install Arch Linux on it. Instead of nurturing my body, I wanted to nurture my brain in the right way. If I want to learn about TCP/IP for example, I don't want to
brew install the right package every now and then.
- I want to spend almost all of my time on the command line
- I realized that even macOS is constructed as a perfect source of leisure and wasting time: I wanted a pure work machine instead
- My plan was to spend idle time not in front of a screen, but read a book or write
- I wanted less distractions from my operating system
- I wanted to feel closer to the machine
After receiving my Thinkpad, I removed Windows and installed Arch from a USB stick, following these steps. After 4 tries I finally succeeded. When I booted the first time, I installed
alacritty as my terminal. Next to this, I installed
Firefox for browsing. That's it. I need a terminal, a window manager and a browser. I barely touch my mouse any more.
- Using my browser to keep up with Slack and E-Mail, I finally reached my goal of just checking it twice a day (because it's just less convenient).
- Just installing Arch made me touch so many aspects of an operating system (again), and it's not all that hard to understand certain areas
- I can buy books like The Linux Programming Interface or TCP/IP Guide and dig deep into the system
- I can read the 2600 magazine and follow along the tutorials
- It made me less distracted during work, since I literally have no notifications or other distractions
Working under macOS, I constantly opened other programs while I didn't know how to proceed on a task. With Arch, it's much harder to do so (and less fun). I have a physical notebook instead next to me and I will, if I can't proceed on a problem, note down my thoughts in the notebook and stare out of the window to think again.
I am excited again to be closer to the hardware I operate on. Being able to master
nvim and setup a proper
tmux setup is so much faster then doing the same workflow inside Visual Code or other editors.
I am using:
With the following PlugIns for NeoVim:
That's it. You can easily setup a
tmux session, split the window where you have your code inside
nvim and on the other half of the window
Moving through code like that makes it really hard after a while to use a normal code editor again. Allthough you can install
vim bindings to VS Code I guess.
Always have a workable Live-USB stick with Arch installed with you in case of an emergency. I tinkered with the startup script and got myself into a loop. I had to boot from the stick, decrypt and mount my hard drive and then revert the changes to be able to boot again.
In addition to my Thinkpad, I operate a remote server (for around 10 Euros/month) for backups (via
rsync) and other fun activities. It can help to have another machine for backups just in case you want to take a snapshot of finally perfect configured Arch installation.
This is so nice to work with that I even don't miss the beautiful 5k LG UltraFine at all, which I previously had.
I provide the basic dotfiles and steps for my setup on my GitHub account. It's good to run contrary to certain environments. The iPad for example became so powerful that the casual user doesn't need a Notebook anymore to do every day tasks. That's a perfect time to reconsider your relationship with your tools you are using.
If you follow the steps, it's really simple to operate within Arch on a Thinkpad. You need to tinker with HDPI here and there, and adjust some hibernate functionality. But overall it's what I wanted: The bare minimum to get to a comfortable coding environment, with almost no distractions.
In the end, the Thinkpad also has a much better keyboard than the MacBook Pro. Also the form factor is just perfect. A bit bigger than the 13" and smaller than a 15" model.