From the perspective of a consumer, my MacBook Pro is basically the perfect laptop, at least in theory.
I love the battery life and performance of the hardware, not to mention the unrivaled build quality of the MacBook (screen, trackpad, keyboard).
In practice, however, MacOS limits the capabilities of the hardware such that I cannot daily drive my MacBook Pro as a work or personal computer (poor containerization support, an annoying development toolchain, and no _real_ support for video games).
When Asahi Linux is mainlined, stable and features full hardware acceleration - the MacBook running Linux will likely be the best laptop money could buy. Until then, please AMD, Intel, release some mobile hardware that's at least as good. It sucks so bad seeing what is possible with today's technology but that being exclusive to a company unsuccessfully determined to ring fence you into their API ecosystem.
My biggest complaint is that I have a "16-core Neural Engine" in my MacBook, but nothing that can be run on it. Sure, internal macOS tools such as the fingerprint reader or even webcam might use it, but not a single ML project on github makes use of it. I can be lucky if ML projects don't depend on CUDA to run.
Honestly, I think I'll sell my MacBook Pro and just buy a new one with less cores.
Bought it expecting to be able to abuse it towards ML, but it's barely even supported.
From my experience developing C++ on it, as long as you don't use anything exotic, everything is portable (i.e. just recompile).
On the other hand, for the missing apps and other stuff, I'm running a Linux VM via VMWare Fusion Pro. It works efficiently, and interoperability is good. Just add another internal network card to the VM, and keep an always on SSH/SFTP connection. Then everything works seamlessly.
Never had any problems for 7 or so years when developing that application and writing my Ph.D. in the process.
From my experience developing C++ on it, 99+% of everything is portable, but the ~1% that isn't, causes a disproportionate amount of annoyances and extra work. We still have a program that we have to run in an x86 docker container (with all the problems that brings), just to get it to work on our M1 Macs.
The being said, the M1 Pro is a more than good enough piece of hardware that I'm willing to put up with this.
From my experience, the newest VMWare versions and Linux kernels are very good at conserving power when the VM is mostly idle.
I'm doing on that my 2014MBP, and it didn't cut the endurance to half, but need to re-test it for exact numbers. However, it doesn't appear in "power hungry applications" list unless you continuously compile something or run some service at 100% CPU load. Also, you can limit the resources it can use if you want to further limit it down.
I tried a few apple watches, and almost got used to the routine of daily charging, but other annoyances made me try others. Eventually I settled for a Garmin smartwatch and the difference that having to charge once every 10-15 days is huge (you give up a few features, but surprisingly little, at least for my use case). I hope this new emphasis on energy efficiency enables this on laptops (and cellphones)
Works great until you're the author of an application written in Rust and want to distribute MacOS binaries which are automatically generated in CI/CD.
The only (legal) way to compile a Rust binary that targets MacOS is on a Mac. So your CI needs a special case for MacOS running on a MacOS agent. Annoyingly, cross compiling CPUs architectures doesn't work so you need to an Intel and arm64 Mac CI agent - the latter being unavailable via Github actions.
To make things even more bizarre, Apple doesn't offer a server variant of MacOS or Mac hardware, which seems to indicate they expect you to manually compile binaries on your local machine for applications you intend to distribute.
Asahi Linux is introducing support for some brand new Apple Silicon features faster than macOS.. M1 has a virtual GIC interrupt controller for enhanced virtualization performance. Linux supports it, macOS does not.. M2 introduced Nested Virtualization support. The patches for supporting that on Linux are in review; macOS still doesn't support it.
Apple appears to have a one of a kind special license for ARM (due to being a founder of the company) so they can pick and choose otherwise "required" extensions to support and add their own extensions as well. You can't directly compare an Apple design to a specific ARM version because of this.
Kernel integration and a virtualized filesystem that isn't bottlenecked by APFS. Docker is excruciating on Darwin systems.
> What are you talking about exactly?
Apple makes hundreds of weird concessions that are non-standard on UNIX-like machines. Booting up a machine with zsh and pico as your defaults is not a normal experience for most sysadmins, nevermind the laundry-list of MacOS quirks that make it a pain to maintain. For personal use, I don't think I'd ever go back to fixing Mac-exclusive issues in my free time.
> no _real_ support for video games
Besides Resident Evil and No Man's Sky (this generation's Tomb Raider and Monument Valley), nobody writes video games for Metal unless Apple pays them to.
For a while, MacOS had a working DirectX translation stack for Windows games, too. Not since Catalina though.
> Kernel integration and a virtualized filesystem that isn't bottlenecked by APFS. Docker is excruciating on Darwin systems.
Docker is great as long as you don't use bind mounts. I use it daily for development in dev containers.
> Besides Resident Evil and No Man's Sky (this generation's Tomb Raider and Monument Valley), nobody writes video games for Metal unless Apple pays them to.
There are plenty of great games on macOS. Factorio, Civilization, League of Legends, Minecraft. But you're right that there aren't too many AAA games.
> the unrivaled build quality of the MacBook (screen, trackpad, keyboard)
Typing this on a ThinkPad X13, after years of MBPs, I beg to differ. The screen on the ThinkPad is better, even at a slightly lower resolution of 1920 x 1200. It's IPS like the Mac of course, but also Anti-Reflective (matte), which Apple hasn't offered since 2008?
The ThinkPad has Left, Right, and Scroll mouse buttons, as well as a TrackPoint stick. Not so on the Mac.
Finally, the keyboard. You're going to laud Apple for their quality keyboards, really? The ThinkPad has a nicer keyboard feel (subjective, I know), has actual Home, End, PageUp, PageDn, and Delete keys, two Ctrl keys, and praise Jesus, gaps between the function keys, so you can use them confidently w/o looking.
Apple has released Rosetta for linux. I believe the use case is running x86 binaries inside of an Arm virtual machine on Apple Silicon, instead of emulating an entire x86 CPU and running the entire OS as x86. Apparently it works pretty good and some people have even used it on non-Apple arm chips. Anyways, I wonder if it could be used in combination with something like Proton to emulate x86 on linux.
> poor containerization support, an annoying development toolchain
Just run an always-on (headless!) Linux VM in the background, and don't use the host macOS for anything besides desktop apps (Slack, VSCode, Browser, mpv, terminal emulator but always ssh into the VM, etc). The same way you deal with a Windows machine.
This works good enough unless you work on hypervisors or other bare metal only tech. But hey, that's currently non-existing on M1 Macbooks (or undocumented and locked to Apple ecosystem) anyways.
> and no _real_ support for video games
That's the real deal breaker if you are into gaming.
The Windows machine (X86) has WSL2 though, which seamlessly integrates with VSCode. Add Windows Terminal and for me it made Windows the better dev platform. I still prefer Linux though.
Sometimes working local is just the easiest/fastest most convenient.
> Just run an always-on (headless!) Linux VM in the background, and don't use the host macOS for anything besides desktop apps (Slack, VSCode, Browser, mpv, terminal emulator but always ssh into the VM, etc).
This is what I do. Specifically, I use Canonical's Multipass, and treat tmux as my "window manager," -- I even mapped my iTerm profile's Command+[key] to the hex code for tmux-prefix+[key], so that Command essentially feels like the Super key in, say, i3. For example, rather than having to type Control+p h, Command+h selects the pane to the left.
The Multipass VM is flawless. Closing the laptop doesn't shut it down, and with the tmux resurrect plugin, sessions persist between Mac restarts (which are rare). If I didn't know better, I'd think it was just a native terminal session.
If I need proper x86_64, I just ssh into my super beefy Linux NAS at home via Tailscale. Both Linux machines are identical in terms of dotfiles/etc, so it feels exactly the same.
I've truly never been happier with Linux. I no longer obsess over my window manager (which used to be a serious time sink for me), and I still get what is IMO the best desktop experience via my Mac. The only tinkering I do is checking out the occasional new neovim plugin, but I really enjoy doing that, as it has a tangible benefit to my dev workflow, and kind of feels like gardening, in a way -- I like the slow but persistent act of improving and culling my environment.
I still have a PC, but I actually recently uninstalled WSL2. It never felt truly finished or "right", and Windows Terminal can be incredibly sluggish -- keystrokes have far more latency than iTerm. I've actually started to embrace just letting "Windows be Windows," even learning Powershell (and enjoying it more than I'd expected).
I've also pretty much moved from gaming on a PC to PS5. So, for me personally, I don't really see a place for Windows anymore. Every single time I boot into my PC, something is wrong -- most recently, it literally won't shutdown unless I execute `shutdown /s`, and no amount of troubleshooting has been able to fix it. I know Windows like the back of my hand, and still it's a constant feeling of death by a thousand cuts.
MacOS has seemingly gotten worse over the years not better. Features removed. Interface has been changed for the worse. The drive to unify the desktop experience with iOS. I could go on.
i've used a mac for development for various projects which have been globally impactful for over a decade. it's literally unix, man.
docker on mac can be improved, but if i'm developing for other architectures it's much easier to just test natively. toolchain for all the languages i use is exactly the same as any other *nix.
gaming i'll give you a point, but that's why i have windows dual boot at home. /shrug
Been using MacOSX since Powerbook up to first gen Macbook - and I finally gave up: I installed Linux on it instead.
Pretty much all servers are running Linux even back then. Using Unix on work computer/laptop causes way too many encounters with various quirks and glitches. It continuously drags down your productivity too many times everyday.
After much stress, I installed Linux on my Macbook instead - but then I encountered various hardware-related glitches instead.
It’s Unix but it’s not Linux. When Linux is your target it makes sense to use it on your development stack entirely. The irony being that Microsoft seem to make the best Linux OS for development for my use cases of docker / server side / cloud operations.
Yup, been doing that for decades. It's called "vendor lock-in". And its unethicality has been discussed comprehensively for decades as well.
And when countries tried to move into an open document format - they'll bully the country, using the strong arm of the Uncle Sam, until they're back to MS Office again.
So when people are amazed by Bill Gates' charities - I don't. His money comes from the sufferings of countries.
I understand that corporations are bastards and built on foundations of the crushed skulls of children and involuntary human sacrifice but Office on the Mac is not a bad product and is improving. But the windows version has just been around longer and had more work done on it. And don’t get me started on LibreOffice - it’s buggy as hell. Even more than Office on a bad day
I’ve met Bill. He wouldn’t be out of place among HN’s defective half: the dubious pro SaaS VC funded US university alumni…
I wasn't talking about the product - I was talking about MS using the product to lock the whole world into its own =proprietary= format (so no one could reliably open & process it - and then others got blamed for it, not Microsoft), AND then aggressively attack those who try to escape from its lock, even countries.
while WSL2 is great for what it is it just doesn't compare to working in a linux distro. there are a lot of pain points where external tools wont always work well with WSL.
I also like the productivity customizations posseble in Linux while the same are difficult or impossible on Windows.
of course if your work is tied into the windows eco system having WSL is good to have.
Controversially, I have a better development experience on Windows using msys2 + zsh (basically "git-bash" on steroids). I would put that development experience almost on par with MacOS.
WSL2's virtualized workflow just causes too many issues for me. WSL1 was better IMO but it wasn't significantly better than msys2 and also had issues (like you still need remote development tools to mount codebases inside editors) - unless you want to run/develop Linux binaries while on Windows.
For anything that isn't making basic non containerized applications (simple web applications, web servers), Windows is pretty good.
For anything more involved, requires multiple containers/compose/etc, I prefer Linux as it has the tools I need available natively and no gotyas or performance penalties.
That said, credit to Microsoft on WSL2. The auto-scaling hardware provisioning inside the VM has made containerized workflows on Windows much better. To me, it's just not better than running Linux inside VMWare/Hyper-V/VBox and "DIY"ing WSL2 yourself, something I had been doing for years before WSL2 anyway. WSL2 is more fool-proof then hand-rolling a Linux VM, so there is that.
That's interesting to hear. I've not used Windows in over a decade (I primarily work on mac) but I've heard that WSL was quite compromising and not a great experience for people who primarily use Linux tools.
bash (and other shells), coreutils, pipes, git, text/cli utilities etc. work just fine on WSL, I'd call them Linux tools. My in-shell workflow consists of using mainly those + VSCode (with the WSL plugin) + ssh'ing somewhere now and then, and it's entirely sufficient for this purpose. I haven't tried running typical webserver/db services on it though.
Mac being a certified Unix just means that Unix certification is meaningless, bought and paid for drivel. OS X was a certified Unix before it had atomic renames!
I love the battery life and performance of the hardware, not to mention the unrivaled build quality of the MacBook (screen, trackpad, keyboard).
In practice, however, MacOS limits the capabilities of the hardware such that I cannot daily drive my MacBook Pro as a work or personal computer (poor containerization support, an annoying development toolchain, and no _real_ support for video games).
When Asahi Linux is mainlined, stable and features full hardware acceleration - the MacBook running Linux will likely be the best laptop money could buy. Until then, please AMD, Intel, release some mobile hardware that's at least as good. It sucks so bad seeing what is possible with today's technology but that being exclusive to a company unsuccessfully determined to ring fence you into their API ecosystem.