I guess everyone interested in technology heard about the fuzz around Apple’s newest platform. By now they are at the second iteration. I am a gadget freak at times, and consequently couldn’t wait for very long to get my hands on one. Eventually in March 2021 I did my purchase.

But first some history

My Apple history

I only use Apple laptops since about 4 year. Before I usually used Dell professional laptops running Windows, Linux. Yes, even Windows. Main rational was the Windows centric internal IT at work. Linux or Mac was allowed but your are on your own. My morning routine at work would be boot or wake up Windows, browse through my Exchange mailbox through the sysadmin spam and immediately start working in my Linux VM using VMWare Play or Workstation.

But enough about that, Apple is the subject at hand. I immediately liked the build quality of the laptops and I don’t think I go back to PC any time soon. Build quality, that is both hardware and software. You cannot deny that everything (usually) works seamless and flawless. For example, you open your MacBook and immediately your login screen pops up. A nice illustration of the engineering advantages Apple has using a fully integrated approach. Maybe the same build quality exists for PC laptops but they are in the higher price classes and for economical reasons you usually never get your hands on this range, I guess. They are definitely harder to find.

In this initial period I am talking about Intel based laptops of course.

And the painful reality about using Apple devices: once you go… So recently I acquired the cheapest IPhone 13 via work after ’life long’ Android phones. Maybe I am just getting old and don’t have energy left to configure mission critical devices such as my laptop and phone.

Enter the M1

Since I just changed jobs and got offered a nice Intel based MacBook from work, I opted to buy one myself the first quarter of 2021.

So I looked for the cheapest option possible, which was at the time: MacBook air, M1, 8G memory, 512 GB SSD I bought it on Amazon for around 1000 EUR. Not really cheap, but no surprise there.

As chassis color, since I can choose myself, I wanted something different so I chose “Gold”. Little did I know that Apple actually means: “Pink!” It is not an eye soaring bright pink, but still pretty pink alright.

People make mistakes, I am no different. But I can live with it now. I am regularly the center of mocking at home or work thanks to my “outstanding” color choice but I am too old to worry about such things. I could have shipped it back, but as mentioned, I don’t have much patience.

I like

No surprise: I liked it from the start. I was a bit worried about the limited resources but it is really jaw dropping fast. And fast is not really the right term, responsive is more precise to describe the experience. Everything you do is immediate. And the battery life, fanless… You heard the riddle before.

Just the way I like it. Thanks to the “Air” format it is ultra light and it goes on forever without charging. I try to hold myself but is the perfect tool to take everywhere you go and do 5 minutes of work (or write this), if you have to wait somewhere and there is an empty seat available.

Not gonna dwell more about this. The M1 YouTube movies you probably also watched, speak for itself. I would say for Office work, or regular use at home there is no better option, as far as I know of course.

But IT professional and M1?

This you hear less about, because we like to brag with our shiny new toys, right. Or you have to follow some specific Twitter people, blogs, colleagues, … There are definitely issues if you need things such as containers, Vagrant, …

Luckily my job is a lot of the “thin client” kind: I SSH into servers, run Ansible playbooks, operate Kubernetes using kubectl, web consoles, push some stuff to git that automatically triggers automation (GitOps, infra as code. There, I dit it, dropped some Devops ‘hypes’).

And although I only have 8G memory to work with, I am usually not hitting the limits. I have a multitude of Chrome tabs in multiple windows open, multiple instances of VSCode running, mail client, console windows, you name it.

The thing just crunches on and on, without any noticeable delays. No annoying fans or heat. If the system needs some moderate swapping, this is usually not noticeable thanks to the ‘system on chip’ M1 approach.

I only had problems during something like a week or 2 when Apple pushed an update that suddenly increased my regular memory usage. Out of the blue, I regularly experienced lockups due to excessive memory swapping. After some cursing and googling around (no useful solutions to find) I adapted: monitor ‘Activity Monitor’ and kill some VSCode windows, plugins, Docker Desktop, … when it bites again. But one update later, it was back to before and I could just work without worrying about resources.

So 8G sufficient? Maybe, but I would advice 16G to have some head room if you are up for some serious work using big traditional IDEs for example. Of course I didn’t expect this would become the machine I want to use for every task I need a computer for. Remember, I have my shiny ‘Space Grey’ Intel MacBook for worky things.

Containers and VMs

This might be an issue. Since ARM64 is only popular fairly recently (Apple M1, AWS Gravition, RPi, …) your favorite tooling might be running behind.

‘Not a problem’ says Apple: Rosetta will automatically translate x86_64 binaries to ARM64. That works pretty good for regular programs but not so much for applications that ‘go deep’ in your system: Docker, Virtualbox, …

‘Not a problem’ says Docker: Just use ARM64 container images. Great, if they exist of course. And many times, you need to update your stuff to support both CPU architectures: for example, You use an x86_64 driver for your language and favorite shiny database technology and maybe it is not there yet for ARM64.

Even better, you can use x86_64 container images and let Docker do the translation for you (using qemu behind the scenes). Last time I tried this, it was unusable because qemu is way too slow translating instructions. That might improve of course. But worse, the qemu ’encapsulation’ didn’t work at all when I tried it. Some of my arguments for my command that I ran in my spawned container were confused with qemu arguments, and consequently I saw some vague qemu error. Made me laugh and nostalgic to the days where I created shell scripts without worrying about security precautions such as shell escaping. Again, maybe it is improved by now, but I believe the performance problem renders it unusable for most applications.

Only viable solution to me is wait till ARM64 support is more mature, which is just a matter of time. Or you can resort to Docker or Podman communication with a container API running on an x86_64 machine. Considered this a few times but it is just easier to boot my Intel laptop or desktop and do my container thing there when I can’t use an arm64 image or it is too much work, which does not happen very often.

VMs

Might be your biggest problem: Vagrant, Virtualbox support. If you are in my line of work you probably manage some VMs using something like Ansible. And we like to test our things out locally, using Vagrant, which usually leverages Virtualbox as you know.

It is simple. The latter doesn’t, and will never support ARM64. As far as I know it is their current view. There are some alternatives to host ARM64 VMs, such as UTM, Parallels and VMWare. I didn’t study any of those in depth. The last two are not free I believe, and the first one works but it is not Virtualbox.

So you just end up with Vagrant projects you cannot start on your M1. At least it needs a lot research and work to make it work on ARM64. That is, if your are lucky, you don’t need drivers that are only available on x86.

My approach is again, pragmatic, to just run these loads on other machines. I have the luxury of having both platforms in reach, so I just use the best tool for the job. And luckily I don’t need Virtualbox often because there exists a thing called containers. I know Docker Desktop on Mac uses a VM in the background but at least I (usually) don’t need to worry about that.

Verdict

Do I like it? For 99% of the time, a loud and clear “Yes!”. Nothing is perfect, even your favorite Linux laptop. You can’t convince me otherwise.