As a GNU Linux developer, I am used to working with the GNU Linux distribution on a wide range of Linux-compatible hardware. Recently I got a Macbook as a mobile workstation, which gave me the chance to explore the world of macOS and a different hardware architecture, i.e. Apple silicon, to see how they compare to what I'm used to.
In this post, I will share my first experiences of using macOS and the MacBook as a GNU Linux developer
This was my first time using MacOS and I was excited to use it as a developer. The one I'm using is a 14" Macbook Pro that comes with the Apple M2 Pro chip, 10-core CPU, 16-core GPU and 16-core Neural Engine. It has a 512GB SSD and a Liquid Retina XDR display.
Previous laptop I used and its specifications
I used an Acer Nitro 5 with 1TB HDD and AMD Ryzen 5 Gaming laptop with 8GB of RAM, which I upgraded to 16GB. I bought it about 4 years ago when I started my engineering career. And I say it was a great deal for me as I had a much more comfortable experience with it and it still gives the same great experience as it did when I bought it. Although it lacked with the battery health, I don't mind it.
My experience with the MacBook
The way it was packed was incredible, as the slots for all the accessories were well thought out. When you open it, there is a pleasant chime and the system boots within a second or two. The previous laptop took a minute to boot up, so this is a huge improvement in terms of productivity. As a developer, you want everything to be fast and furious. The amazing thing about Apple is that they maintain a unique and inspiring design. I even personally like their branding and marketing strategies. I often look at their adverts and website for inspiration.
When I first opened it up, the keyboard and trackpad felt responsive and comfortable, and the Retina display was gorgeous. I found myself a little disoriented. You get two extra keys in place of the Winkey and Alt keys, which are Command and Option keys, and the extra-large trackpad gives a spacious feel when working. The FaceTime camera is great and I have an external Logitech Brio 500 webcam and, to be honest, both are very similar in terms of frame production. The MacBook's power management is exceptional.
The first thing I did was run a Geekbench test for fun and the results were stunning. I could relate to the level of excitement you see on the MaxTechOfficial Youtube channel. The thrill of it is real.
Experience with MacOS
Coming from a Linux background, I found MacOS to be more polished and easier to use. The layout and design of the interface felt intuitive and easy to use. However, I did have to get used to some of the differences in layout and the way certain features were accessed.
I have used every Linux distribution I can think of. People have called me a distro hopper.
But it varies from person to person and everyone has their own use case and comfort level. People tend to go with the one that they feel is the most stable and comfortable for them.
I love customisation. I started customising my distribution and most of the time I installed vanilla Arch GNU Linux and customised it to my liking with some great looking dotfiles from the unixporn subReddit.
When I started using MacOS, I found myself missing the fact that I could not customise it and that my previous Linux dotfiles were no longer needed. One of the first things I did was open up the Terminal and start working at the command line. As a Linux developer, I was relieved to find that the MacOS terminal was based on Unix and felt familiar. Many of the commands and utilities I was used to using in Linux worked the same way in MacOS, although there were a few differences and some new tools to learn.
Package management in MacOS is fun, especially with homebrew. In Linux I used different package management tools depending on the distribution I was using. I found that Homebrew was easy to use and had a wide variety of packages available. Another thing I had to get used to was the fact that some of the tools and software I was used to using on Linux were not available on MacOS, or had limited functionality. I had to do some research to find alternative tools and packages to use. Also, some of the scripts and command line tools I had developed for Linux had to be modified to work on MacOS.
I preferred to use MacOS because I had experienced a number of strange behaviours with Linux distributions, and I often ran into problems when switching distributions. You won't have a comfortable layout and Windows setup unless you try to make it awesome by ricing it. You get a lot of security with MacOS, whereas in Linux you have to set everything up from scratch.
The thing that I feel is lacking in MacOS is that you often use the GUI and you do not have to go with the command line. The ability to customise everything to a greater extent is very limited here in MacOS. So you don't have any .conf files where you can change and play with the MacOS.
Overall, as a GNU Linux developer, you may find that the MacOS and MacBook experience provides a new set of tools and challenges to work with. With some adaptation and learning, you may find that the combination of macOS and MacBook hardware can be a productive and enjoyable development environment.