MacBook Pro 2021 Review
I have added a MacBook Pro 2021 model to my development computers recently. After two month of work with the new M1 Pro, it’s time for a quick review. This is for readers who think about getting a Mac for software development, particularly a M1 machine. You may be wondering if it’s worth the expense, whether it is as fast as they say, and whether it is suitable for cross-platform software development. I’ll try to answer these questions from my perspective. As a software engineer, I worked with Linux laptops from Lenovo and Dell for almost two decades, so my previous experience with Apple computers lies in the ancient past of information technology.
I have to admit that Apple’s new Silicon line-up is a masterpiece of engineering. The performance, power consumption and thermal properties of the M1 chips are impressive. The M1 Pro and M1 Max models are designed specifically for Apple and feature a “unified memory” architecture, meaning that a 10 core ARM CPU and a 16 or 32 core GPU are integrated on a single chip onboard with 16, 32 or 64GB LPDDR5 SDRAM which is accessed via 8-channels rendering a whopping 200 GB/s (Pro) or 400 GB/s (Max) total bandwidth. This architecture delivers a performance that compares well with current high-end Intel-based laptops. It’s a step-up from previous MacBook models and also marks a break with the x86-64 architecture, although Apple has used ARM chips in other products in the past.
I won’t bore you with benchmarks, but if you are interested, you find that Passmark has all the data.
What I consider even more impressive, is the energy efficiency of this machine. 10 or 16 core CPUs aren’t a rarity these days after all. If you’re going for raw power, an Intel Xeon, a Ryzen 9 or even an AMD EPYC or Threadripper may fit the bill. But these CPUs are power-hungry. The M1 MacBooks, on the other hand, can do a full day’s work on a single charge. Apple claims a battery life of 21 hours, but realistically it is somewhere between 10 and 12 hours depending on use. So, a full work day off the grid is doable and the M1 models are actually the only (powerful enough) laptops I know that can do this. Also, they are very silent and cool. The fan only comes on when you stress the CPU continuously, even though I use the machine in a tropical environment.
Other plus points of the M1 MacBook are the extraordinary build quality, the sleek design and the amazing “Retina” display which looks like a high-resolution OLED display, but surprisingly isn’t. It is an LCD display backlit by mini-LEDs. The screen reaches a peak brightness of 1,600 nits with a contrast ratio of 1000000:1. The XDR mini-LED technology provides high contrast and brightness at a lower power consumption than OLED. The 16.2” display has a native resolution of 3456x2234 at 254 pixels per inch. For software development, I’d always choose a 16” or bigger screen, because development often requires to be able to look at multiple windows simultaneously. Of course, you can also connect your MacBook to an external 4K monitor. More excellence is found in the internal stereo speakers which, despite facing upwards from the chassis, do not cause any acoustic feedback to the internal microphone. They are among the best built-ins I’ve heard in a laptop. If your work involves audio and video, the M1 MacBook Pro is going to shine.
Now on to development. If you’re developing for macOS or iOS, then obviously the MacBook is ideal, but it also suitable for cross-platform development. Since the macOS is based on BSD, you get a Unix command line (zsh or bash) and while most commonly used development tools aren’t present out-of-the-box, they can be easily installed with the Homebrew package manager. It took me roughly a day to spin up a complete development environment with Visual Studio Code, CLI tools, Git, Docker Desktop, Node.js, Python and Go, a local database, libraries and whatnot. As mentioned, the new Macs run on an ARM64/v8 architecture and this is rarely ever a problem. At this point (late 2021) almost all applications are available for the Silicon architecture. In those cases where you have to work with x86-64 applications, you need to install the Rosetta 2 emulator that translates the machine code. The installation is automatically triggered the first time you run and Intel executable.
The Rosetta 2 emulator runs in the background and kicks in, every time you start an x86-64 application. If you need to run x86-64 CLI programs, such as older Node.js Versions (<= v14) that don’t support Silicon, you can run the terminal in Rosetta mode. Alternatively, you can run individual commands in emulation mode by using “arch”, e.g.
arch -x86_64 node on the command line. Overall, emulation runs transparently and fast. It is barely noticeable, unless the process performs heavy computations, for example cross-compilation or building Docker images for the Intel architecture. While it is possible to run Kubernetes on the M1 machines, for example Minikube, Kind, or MicroK8s, the installation may still present some challenges. So, if your work is centred around Docker/Kubernetes and if you are using mainly x86 images, the M1 machines are not an ideal choice. The same can be said for programming environments that are not up to date, such as Node.js < 14, PHP < 8, older Python versions and in fact any programming environments with legacy x86 toolchains. You can still work in Rosetta mode, but it may not be ideal and you may have to wait for native Silicon support.
Let’s talk aftermarket upgrades. Is it possible to increase RAM and disk capacity in the M1 machines? The short answer is no, but possibly yes. Confusing, I know. The SDRAM and SSD components are soldered onto the main board. This makes upgrades incredibly difficult. Apple itself does neither perform nor recommend it. According to reports earlier this year, Chinese technicians have successfully performed both RAM and disk upgrades on the M1 models. Perhaps we will see inofficial M1 modding/upgrade services offered by shops in Asia soon. Given the inherent risks, voiding your warranty is probably the least of your concerns with this procedure. Another thing I didn’t like is the MacBook keyboard. It is ultraflat and squishy. My bi-lingual keyboard has keys with English and Thai characters appearing in the same font and colour, which is visually extremely confusing. On the positive side, the gimmicky touch bar has disappeared and made way for full-size function keys.
Would I recommend a M1 MacBook for development? Yes, certainly. If your work involves media creation, design, or any creative work even more so. Even for us “regular” developers who mainly deal with code, compilers, databases, diagrams, specifications and such, the M1 MacBook is very suitable unless your work is somehow tied to the x86 architecture. Would I prefer a MacBook for development? To be honest, I still prefer a high-end Linux machine. There are three reasons for that: (1) I can customise a Linux computer exactly to my needs, (2) it is more closely related to server environments, (3) I can pick, upgrade and expand the hardware as I wish. Finally, there is the price, which is steep for all M1 models. A high-end Thinkpad, Dell, or gaming laptop would cost less while offering similar or superior performance and configuration. The M1 Pro and Max models are premium laptops that come at a premium price.