A Programmer's Review of the MacBook Pro.

XMAN

Active member
A Programmer's Review of the MacBook Pro. #1
So lately I've been toying with a new MacBook Pro that I'd bought. I've got my own reservations about how I feel about the whole Apple ecosystem, and none of them are particularly great either. I've used Linux for a few years now, and I got to say, surface level is fine. Once you start getting into reading linux source, having to write custom drivers, and then user level wise, circular dependencies (systemd + dbus, for example, which are two separate entities entirely but are circular on themselves), things get a little messy.

So, given this, why did I buy a MacBook Pro? Well, it's more of a convenience factor, than anything. I wanted something that was portable, but also something that could keep up with my own desktop build at home. Plus, the MacBook Pro 2021, the MBP with the M1, is now about $1k cheaper than the previous MacBook Pros on Intel.

So who is the review targeting? Well, it's targeting someone who wants decent performance from a computer, wants a portable and convenient laptop for daily use, away from home. For people who like using UNIX-like operating systems, but don't like the messy and unpolished disaster that the Linux userspace is now. I'll be breaking this down into a few groups of thought. All of which are from someone who programs daily, to include some of the colored hat activities.

I'll start off with the ease of use and daily use factors. For just daily tasks--in my case, checking and replying to emails, maybe watching YouTube or a show of some sort, play some simple and not-so-demanding games--the M1 MacBook excels. At first it took a few days to get used to, it took some learning, but with all things new, there's always a learning curve. There's only one thing I consistently run into a problem with, and it's Spotify. Now, when it gets going, it works well. But Spotify is a slow start, and feels sluggish to use. This isn't Apple's fault, it's actually Spotify's fault for not providing an ARM binary for people to use yet. Actually, there's someone who is trying to get a class action lawsuit started against Spotify for their failure to provide paying customers with a native distribution of the program yet (applications that aren't native arm64 binaries are run through what's callefd "Rosetta 2", a translation layer that translate x86 instructions to arm64).

That's besides the point though. For daily use, to include Spotify (regardless of it's kinks), I would absolutely recommend getting the MBP. It works well, it has no problem in performance, even rivaling the 3950x in single core performance by some metrics (I'll leave this for you to research), in particular CineBench R23. Take that for what you will. I will say though, that despite it working well, it isn't without flaw.

I have some trouble getting the "right click" functionality to work with the trackpad in some cases. For example, highlighting text, I have to physically move the pointer to the inside of the highlighted text's bounds and press down with two fingers to get it to register that I want to copy text or something. Otherwise, it will just highlight some other text. Perhaps this could be my own failure.

The speakers and display, unsurprisingly, are amazing for the size. It's a 13" laptop, so I wasn't expecting anything great in the sound department, but to say I was blown away when I first blasted some Spotify on the speakers would be an understatement. Is it an everyday thing? No, I'm a normal person (or I'd like to think I am anyways), so I use headphones or actual speakers. But for one-offs, they're amazing. I did play some full length songs on them, and the speakers succeed.

Another disappointing part of the package is the camera. Now, your typical computer enthusiast would probably cover those up. But if you're like me and don't particularly care that any given government or agency, or company can easily find all of your data, you use it to video call friends. The camera on the MBP 2021 is frustratingly disappointing. Like, it's [insert year here], and this laptop was $1300. Why is this thing still on fucking 720p?



Now it's programming time.

Out of the box, the laptop itself doesn't come with many tools to assist you in your nerdy endeavors. There are a few tools, but not many. I found Homebrew in particular to be very useful. You could use another package manager of your flavor, but this is the one that I chose.

In terms of programming, again, I loved it. Like any other *nix machine, the userspace was mostly standardized, with a little bit of extra security thrown in compared to Linux. I had no problem with compilations for the most part, despite it's single core, but I will say that heftier projects do get much more time consuming to compile. I was working on a custom window manager for the thing, as well as a memory injection tool, and the former started to reach a few noticeable seconds in compilation time. Live-able, but with more cores, probably something that could be better.

Finding packages and tools for dependencies was a little trickier, I didn't want to install from source because I hate doing my own package management, so I relied on Homebrew for that yet again. Conveniently, Homebrew stays mostly localized to /opt/homebrew, to include headers and additional files for "support".

The default use shell being zsh is definitely a plus.

In terms of customization, we start to see a nosedive in quality though. What I will say is that there's just not a whole lot of options for things like window managers to begin with. Apple's APIs are a little harder to work with than say xcb/xlib or wlroots to make anything, and no application aside from Dock.app has any ownership over the display server. Due to the locked down nature of the display server for security purposes, this becomes much more like a puzzle than a breezy documentation check when you want to do things like make a window manager.

Despite that, that's something I love about the laptop. Apple did not sacrifice user security for developer convenience.

The keyboard shortcuts are a pain in the ass. I hate not having a home and end key, and control movements through text are a pain too. The keyboard isn't astounding when it comes to programming. In fact, I far prefer any other keyboard to this one. The I/O is also lack luster, as there's two usb-c ports and that's it. Don't expect to plug much of anything in, besides your hopes and dreams. Unless you have a hub of some sort.



All of this is to say, if you have common interests with me (which given the forum you're on, that's somewhat likely), you may or may not want to look at the MBP as a viable portable solution. While the M1 CPU performs surprisingly well, I'm not entirely sure if that's the result of stellar optimization or just the raw horsepower of the chip. I'm inclined to say the former, but who knows. While it's got amazing multimedia capabilities, it lacks in other places like the camera and trackpad usability.

I would say the MacBook Pro 2021 is a much better purchase than an older MBP for sure. The performance per dollar ratio has skyrocketed, compared to the baseline $2200 for prior MacBook Pros. Hell, if you wanted to go MacBook Air, just $300 more lands you a baseline Pro model.

I conclude that it's an amazing daily-use laptop, but it's not a workhorse. For things like compiling extremely large projects, like clang for example, I wouldn't even bother with this. It fails in compilation of much more complex programs. For things like simple, easily compiled programs, go for it.
 
Top