Pro-usage is a term saying nothing at all — I know. The professionals that this story is referring to are mainly developers and tinkerers in the software development arena. Software development with IntelliJ and Docker containers as well as some 3D modeling with Fusion 360 is what I have done mainly for the past couple of months with an M1 MacBook (16GB RAM) after getting rid of the incumbent 16-inch MacBook Pro.
A couple of months ago, due to ending the chapter at my startup and going the route of freelancer first, entrepreneur later, I had to give up my top-of-the-line 16-inch, i9 processor, 32GB RAM, model year 2019 MacBook Pro. I knew that I wanted another 16 inch MacBook Pro, but spending over three grand for an outdated chip architecture did not make sense at the time (Q1 2021). I would have immediately purchased an M1Pro MacBook Pro if they were already available, but unfortunately, they were not. As I no longer am running more than 15 Docker databases and 25 Dockerized Microservices (mostly JVM Spring Boot) on the local machine but rather developing on a smaller scale, I thought I could take a shot at the M1 MacBooks for the time until Apple blows us away with new 16-inch M1 Pro/Max Laptops.
In this story, I do not only describe my experience with the M1 MacBook Air from a developer perspective but attempt to interpolate if the M1X will be the perfect Laptop for all developers — or not.
What Apple has done is truly amazing. Whereas the Intel-based 16-inch Laptop had its fans going full speed all day when attaching two 2K displays (in addition to its own), the M1 drives my 5K display and its own without a whisper. Working on a lap, the Pro had to be put on a book and still got hot, whereas the Air is completely cool. Where I had to lash out hundreds of extra dollars for the upgraded i9 processor, I have a comparable processor in the most entry-level MacBook. Finally, where my MacBook Pro mostly did not survive three hours of development on a charge I sometimes forget that the M1 MacBook Air needs a charger because I can work on it all day (although possibly not as intense as on the MBP).
I got the M1 MacBook Air only in Q1 2021 once most developers had already updated their applications to support Apple Silicon. Therefore, I did not experience the time when every application is loaded with Rosetta as most common applications are updated. That said, Rosetta works unbelievably well and fast, considering the complexity within it.
I am rather lavish when it comes to applications running on my computer. Fifty open Chrome tabs — you’ve got it. Spotify running, online in MS teams, running GitKraken and XMind in the background besides having some development applications running. The computer stays snappy. The limiting factor is the 16 GB of RAM but for “normal” usage this is sufficient.
Currently, my development tooling is relatively standard for backend application engineering. I run IntelliJ Ultimate, DataGrip, Docker, TestContainers, Gradle, GitKraken, Kotlin, JVM, Mockoon, Insomnia, and a couple of other but not significant apps.
Most of the time, most applications run absolutely fine. I have not run into a single blocker regarding something I did not manage to get running at all, but things get a little hairy and annoying from time to time.
Docker is the primary problem child when it comes to my development workflow. Docker 3.3.0 was released with GA for Apple Silicon in April 2021 but, as of now, does not work reliably. Everything does work, but it simply is not reliable, and multiple times a day, Docker crashes completely. Especially when working with TestContainers (Docker containers spun up as part of unit tests) this happens more often than I would like as containers are constantly being created and removed.
IntelliJ, the most-used application in my development toolbox, is fast enough but truly struggles with RAM. The 16GB simply is not enough to prevent periodic freezes and the following error message. I had expected the ultra-fast SSD to make swapping onto disk almost as fast as data in RAM itself, but this definitely is not the case, or the memory management is not there yet. I believe a 32GB or 64GB spec MacBook Pro should make this problem obsolete.
Less popular applications also sometimes are a little more difficult to get going compared to living in the Intel world. Some homebrew and asdf packages, terraform, for example, are not yet updated to pull the correct M1 images yet and thus may fail the download. Others download but then fail to start. Which ones exactly will work and which do not is difficult to find out in my opinion but there is mostly some other way of getting them to run, for example going the legacy route and installing them by hand.
All-in-all I think M1 is 95% there when it comes to the tooling I use. The bottleneck is RAM, as having five IntelliJ windows open as well as running a test suite in the background can bring the system to a crawl.
Admittedly, I am only a hobbyist when it comes to 3D printing, but every time I work on designs or slicing, I feel the disadvantages of M1.
Fusion360 has not been updated (yet, I hope!) and thus shows how shockingly well Rosetta 2 works on intensive applications. Speed-wise, however, it does leave quite a bit to be desired. Startup time is painstakingly slow, and even when working with small models, it does not feel super fast but rather OK.
Cura is an application used to slice 3D models to G-Code which is later used by a 3D printer. Cura is the first application where I can easily reproduce an application crash as well as a full-system MacOS crash. Simply load a complex model into Cura, duplicate it four times, slice it, and when you hit preview… BAM! We are presented with pixel art at best and with a system crash at worst. Cura is based on my beloved QT platform (caution: irony!) written in C++ and Python. Where the problem lies precisely no one really knows, but this is a significant limitation as it simply does not allow previewing of complex models.
I’d love to leave this section out, but unfortunately, I can’t. Program crashes occur — frequently. Most crashes are not predictable but not entirely random either. For example, running MS Teams screen sharing and IntelliJ makes IntelliJ crash about 50% of the time. Spotify, which had not ever crashed before now sometimes crashes. Even Chrome crashes without warning every couple of weeks. Docker, as written above, crashes often and Cura crashes reliably with complex models.
Compared to the Intel-based MacBook Pro where crashes were very rare this definitely is a step backward. However, I am confident that Apple and application developers get reliability back to where it was in the foreseeable future.
At times when a lot is going on, the whole system nearly freezes for about ten seconds before going on and working normally again. I think this is due to thermal throttling and the MacBook Air having no other option besides doing fewer calculations to get the temperature down as there are no fans. This, I hope and assume, would no longer be the case with M1X as it can be cooled more effectively.
The M1 MacBook Air already is extremely impressive for its size, heat production, performance, and price but does not quite cut it for a full-time developer, in my opinion. 16GB RAM is not sufficient, the screen is small, only two USB-C ports are available. If your application toolbox is filled with M1-incompatible software or you heavily utilize visualization, which may be flakey, you should hold off a little longer. Other than that, I believe entirely that Pro users can get the new MacBook Pros with M1Pro / M1Max chip without hesitation as the main application-crashing issues with M1 are rare and most definitely will be fixed with time.
I'm interested in exciting ideas, big or small, and business partners alike. So drop me a message, and we will talk about the vision you are pursuing.