Apple made me buy two laptops

M1 Max MacBook Pro 16

Picking the perfect laptop can be very difficult for software developers. There are so many laptops on the market now that are touting themselves as the “best laptop” for developers, as well as other categories. Then there is the fact that there are many types of software development and just because a laptop works well for one use case, does not mean that it works well for another. For example, if you are developing software for iOS, you cannot do that on any laptop this is not a Mac. For developing 3D games, a laptop without a discrete GPU is probably not a good idea. What if you are a software engineer who works on a wide variety of different software and no single laptop fits the bill?

Back in 2020, Apple introduced their “Apple Silicon” laptops which understandably earned them a lot of sales. Finally, you could get a laptop with great battery life that didn’t turn into a space heater when doing something simple like writing an email. Intel had been stuck on 14nm for years and the efficiency just wasn’t (and still isn’t) there for what Apple envisioned for the MacBook. Many people had been saying for several years that Apple’s phone processors were almost there in terms of providing enough power for a laptop/desktop experience and Apple took that to the next step by making it a reality. Their M-series (Apple Silicon) chips are nothing more than A-series chips they already had in their iPad/iPhones for years but with more cores and more power.

These MacBooks are arguably the best laptops on the market today because of this. I personally went and bought the M1 Max MacBook Pro 16 for my software engineering use case to replace the MacBook Pro 16 (2019). It has a fantastic mini-led screen, a good keyboard, best trackpad in the industry (same as all MacBooks), battery life to last well past a work day, silent and cool unless pushed hard (and even then it barely gets loud), a good amount of I/O, and a powerful chip (CPU/GPU). Sounds perfect right? There is only one little problem though – software compatibility.

M1 Pro and M1 Max chips
M1 Pro and M1 Max chips

Back when Apple still had Intel chips in their machines, Macs could run Bootcamp which allowed them to dual boot into Windows. They also could run x86 virtual machines for either Linux or Windows. While you can still run virtual machines on these new Macs, Bootcamp is gone and the virtual machines can only run ARM guest OSes and not x86. This means that not every software developer task will even work on a Mac anymore. For example, I build cross platform desktop applications with Flutter and build/release a Windows version of these. With my Intel MacBook, I could simply fire up a VM or switch into Bootcamp, build and test the app and release it, then switch back over to macOS. There is no way to do this without an x86 version of Windows and as stated before, x86 Windows will simply not run on an Apple silicon laptop.

Those familiar with these new CPUs may be thinking of Rosetta. Rosetta is a translation layer that works at install time for an application to translate x86 applications to ARM and for the most part it works great. Games and applications that would otherwise not work at all on Apple Silicon run with only a minor performance penalty. However, it is clearly stated by Apple that Rosetta will not work to run a virtual machine for another architecture. Qemu is an application that does virtualization and emulation and using it, someone could “emulate” Windows x86 but it is extremely slow to the point it is really unusable. It is almost like how someone technically could play a video game at 2fps.

Most servers also have x86 CPUs and run Linux, therefore almost all server software is written to run on x86 Linux. Traditionally when doing server side application development, one would fire up a Linux VM and do the development on it. This is important because although macOS is similar to Linux in a lot of ways, it is not the same. Running in a VM with the same OS as the server being targeted ensures that whatever software is written will run exactly the way it will in production. With Apple Silicon, this is no longer possible.

At this point, it has been established that there are certain types of development that are virtually impossible to do on current MacBooks. There are a couple of solutions for these types of developers though. One solution that can work depending on your internet speed is to rent a VM in the cloud whenever doing these types of development. This ensures that when not working on a project that requires this type of hardware, you aren’t paying anything and you only pay for what you need. The biggest downsides to this approach are cost and latency. If you are working on Windows graphical applications (such as the aforementioned Flutter development) the experience can be quite laggy. It can also be expensive as all cloud computing can be, particularly if you need persistent storage.

Using multiple laptops
Using multiple laptops

The most obvious solution, and the one I have personally chosen, is to simply buy another laptop in addition to the Mac to do those specific types of development on. This comes with the drawbacks of being expensive and also means carrying two laptops in some situations but it is also a one-time purchase unlike a cloud VM. It also means no internet latency or lag. I have tried and returned over 5 laptops in my search for a laptop that is not a Mac to aid in my development. The one I have landed on, for now, is the ASUS Zephyrus 14. It is worse physically than the MacBook Pro in almost every way that matters to me but it allows me to build specific software that I simply cannot on my Mac.

I want to wrap up this article by pointing out that despite some limitations, Apple Silicon MacBooks are still the best laptops on the market right now in my opinion. They represent a huge leap forward in portable computing and showcase just how far behind the competition is in terms of performance per watt. It is also a good idea to recognize that no laptop is perfect and that for software developers in particular, you may just have to pickup a second laptop.

Tags:

To comment, please go to this article on Medium