Yes, it’s personal preference, but I can’t realistically use an external keyboard and mouse on an airplane or whatever. I like my ThinkPad way more than my MacBook Pro for actually getting work done. It feels nicer to type on, and my hands don’t need to leave the home row to press mouse buttons. Apple’s trackpad is nicer, but I think it’s solving the wrong problem.
That said, I have a very keyboard-driven workflow. I use:
ViM for editing
terminal for searching (macOS’ open is nice)
shortcuts for switching apps (alt+tab and `alt+`` mostly)
tmux for terminal window management
That mostly maps to macOS decently well, but there’s also random differences I need to work around.
use Homebrew
I use macports, which I much prefer.
Rant about homebrew
Homebrew feels bolted on, macports feels more like an actual package manager. Stuff keeps working across macOS releases, which is nice because o use fish as my shell and don’t want to fix that every time I do an upgrade.
Rant about macOS as a dev
But it feels like putting lipstick on a pig. I constantly have to fight builders that grab the system version of something instead of my macports one (I think I’ve resolved everything now?), especially Python. I can’t do system upgrades through it. And so on. It’s just an add-on package manager, and while it’s nice, there’s friction at the edges.
That said, I very much prefer macOS to Windows, but I prefer pretty much anything else to macOS. I would prefer FreeBSD if it had better hardware and docker support.
I use docker on both Mac and Linux and can’t really tell the difference.
Do you have Docker Desktop or CLI-only? Because IIRC Docker Desktop on Linux runs in a VM like on macOS, whereas CLI Docker ruins directly on the kernel, so it’s way faster.
Here’s some practical issues I have with Docker Desktop on macOS:
random breakage where I have to restart Docker (the VM, not an individual container) - i.e. “API version doesn’t match…” like every other week
uses way more RAM - containers are just processes on Linux
disk space is separated and needs to be adjusted if I forget to run a prune - docker on Linux just uses my regular disk
rebuilding is kinda slow - assuming a Docker Desktop issue because “sending tarball” takes forever
We have a bunch of docker containers, and I’m regularly running 10+. I feel like I’m constantly fiddling with Docker on macOS, whereas it’s mostly transparent on my Linux machines.
So to me, it’s just a crappier experience. I honestly can’t think of a single upside, other than the pretty GUI, but learning a few CLI commands is a small price to pay IMO.
And that is also my general experience with macOS. It looks pretty, but it just feels like I’m interacting with the system way too much, whereas on Linux the system gets out of the way.
Rant about macOS
Some specifics:
“snapping” Windows - macOS kinda has this now, but Linux has had it for as long as in remember (15 years?)
launcher (Alt+F2 or Meta) on KDE Plasma is unobtrusive
the system updates when I tell it to, not overnight randomly
Steam actually works for most games
Flatpak and Appimage are nice
Rant about work policy
If my work let me pick whatever computer I wanted, it would probably be a Framework or Lenovo laptop with Linux. But my options are locked down, crappy Windows (IT box) or MacBook Pro (no IT nonsense), so I pick macOS.
In fact, I think only 2 of my coworkers prefer macOS, but we use them to get around IT policies and the outside team that started the project convinced the uppers that we need it. However, as a lead, I need to be the support for our team, which means I should probably use the same devices as them.
My last job let me pick my OS, so I ran Arch for 5-ish years before switching to openSUSE Tumbleweed, which I still run today (like 5+ years now). I’m not going to leave because of Linux vs macOS and I love my team and boss, but I do prefer Linux.
Anyway, I’m kinda excited because I’ll be getting an upgrade soon. I’m on an Intel Mac, but I could get an M3 if I push, or maybe I’ll wait for the M4. I’d much rather run Linux on that hardware though.
It sounds like you want to have a mobile server, which makes sense too for some use cases. I just switched from 2018 Intel to M1 Pro Max and the difference is absurd. They were giving them away at MicroCenter refurb so I got one with overkill specs. Sometimes you can throw hardware at your problem and in this case it worked. It is faster, quieter, cooler, longer battery life, etc. I use BetterTouchTool to address some of the UI issues you noted and forget I have it until I use someone else’s Mac.
I initially set up the new machine via Thunderbolt and copied the apps, which was a mistake. That said every homebrew installed app worked. It was not too hard to purge the Intel homebrew and reinstall the Apple silicon version, and battery life got much better after doing so. Apple Silicon is a game changer. Everything I’ve seen about M4 says it’s supposed to be on TSMC N3E. Personally I’d go with whichever generation lets you get the most ram and ssd.
I’m a fullstack engineer that mostly focuses on backend, so yeah, I basically want a copy of our production app running on my work computer. I have Docker configured so it only uses 4GB or so, but when I add our frontend (1-2GB), web browser (1-2GB), Microsoft crap (1-2GB), etc, the RAM adds up, and that’s just running half of our backend infrastructure.
The silly thing is that almost all of my job is on Linux services, except our mobile app, which is React native and largely targets iOS (though we also support Android). I work across the stack so I need to be able to run all three (backend, web, and mobile).
But I have to pick and choose what I run because my 16GB system is barely enough. So yeah, I wish we would’ve gotten 32GB at the outset, because swapping to disk is by far the biggest performance issue.
I don’t need x86 compatibility - we run native aarch64 on M-series Macs, and x86 on older Intel macs; prod is x86, but we’re considering moving to aarch64
our app is more memory intensive than CPU intensive - basically a bunch of Python microservices
That said, after some research into colima, it looks like it wins on I/O. So if you workload is relatively heavy on I/O, then it’s probably worth trying out.
My issue is memory. I just need so many Python interpreters running Flask, FastAPI, and Django (we use all three). On macOS, I need to reserve the memory for the VM, which means I need to balance how much I can run vs what other stuff I want to run on my system. On Linux, there is no VM, so I benefit from all of the disk caching that the kernel does and can get a much better experience, even when running a lot of services (most of those services are idle most of the time).
So switching to colima probably wouldn’t solve my problem, but maybe it would solve yours.
Yes, it’s personal preference, but I can’t realistically use an external keyboard and mouse on an airplane or whatever. I like my ThinkPad way more than my MacBook Pro for actually getting work done. It feels nicer to type on, and my hands don’t need to leave the home row to press mouse buttons. Apple’s trackpad is nicer, but I think it’s solving the wrong problem.
That said, I have a very keyboard-driven workflow. I use:
open
is nice)alt+tab
and `alt+`` mostly)That mostly maps to macOS decently well, but there’s also random differences I need to work around.
I use macports, which I much prefer.
Rant about homebrew
Homebrew feels bolted on, macports feels more like an actual package manager. Stuff keeps working across macOS releases, which is nice because o use fish as my shell and don’t want to fix that every time I do an upgrade.
Rant about macOS as a dev
But it feels like putting lipstick on a pig. I constantly have to fight builders that grab the system version of something instead of my macports one (I think I’ve resolved everything now?), especially Python. I can’t do system upgrades through it. And so on. It’s just an add-on package manager, and while it’s nice, there’s friction at the edges.
That said, I very much prefer macOS to Windows, but I prefer pretty much anything else to macOS. I would prefer FreeBSD if it had better hardware and docker support.
Do you have Docker Desktop or CLI-only? Because IIRC Docker Desktop on Linux runs in a VM like on macOS, whereas CLI Docker ruins directly on the kernel, so it’s way faster.
Here’s some practical issues I have with Docker Desktop on macOS:
We have a bunch of docker containers, and I’m regularly running 10+. I feel like I’m constantly fiddling with Docker on macOS, whereas it’s mostly transparent on my Linux machines.
So to me, it’s just a crappier experience. I honestly can’t think of a single upside, other than the pretty GUI, but learning a few CLI commands is a small price to pay IMO.
And that is also my general experience with macOS. It looks pretty, but it just feels like I’m interacting with the system way too much, whereas on Linux the system gets out of the way.
Rant about macOS
Some specifics:
Rant about work policy
If my work let me pick whatever computer I wanted, it would probably be a Framework or Lenovo laptop with Linux. But my options are locked down, crappy Windows (IT box) or MacBook Pro (no IT nonsense), so I pick macOS.
In fact, I think only 2 of my coworkers prefer macOS, but we use them to get around IT policies and the outside team that started the project convinced the uppers that we need it. However, as a lead, I need to be the support for our team, which means I should probably use the same devices as them.
My last job let me pick my OS, so I ran Arch for 5-ish years before switching to openSUSE Tumbleweed, which I still run today (like 5+ years now). I’m not going to leave because of Linux vs macOS and I love my team and boss, but I do prefer Linux.
Anyway, I’m kinda excited because I’ll be getting an upgrade soon. I’m on an Intel Mac, but I could get an M3 if I push, or maybe I’ll wait for the M4. I’d much rather run Linux on that hardware though.
It sounds like you want to have a mobile server, which makes sense too for some use cases. I just switched from 2018 Intel to M1 Pro Max and the difference is absurd. They were giving them away at MicroCenter refurb so I got one with overkill specs. Sometimes you can throw hardware at your problem and in this case it worked. It is faster, quieter, cooler, longer battery life, etc. I use BetterTouchTool to address some of the UI issues you noted and forget I have it until I use someone else’s Mac.
I initially set up the new machine via Thunderbolt and copied the apps, which was a mistake. That said every homebrew installed app worked. It was not too hard to purge the Intel homebrew and reinstall the Apple silicon version, and battery life got much better after doing so. Apple Silicon is a game changer. Everything I’ve seen about M4 says it’s supposed to be on TSMC N3E. Personally I’d go with whichever generation lets you get the most ram and ssd.
I’m a fullstack engineer that mostly focuses on backend, so yeah, I basically want a copy of our production app running on my work computer. I have Docker configured so it only uses 4GB or so, but when I add our frontend (1-2GB), web browser (1-2GB), Microsoft crap (1-2GB), etc, the RAM adds up, and that’s just running half of our backend infrastructure.
The silly thing is that almost all of my job is on Linux services, except our mobile app, which is React native and largely targets iOS (though we also support Android). I work across the stack so I need to be able to run all three (backend, web, and mobile).
But I have to pick and choose what I run because my 16GB system is barely enough. So yeah, I wish we would’ve gotten 32GB at the outset, because swapping to disk is by far the biggest performance issue.
So yeah, get more memory than you think you need.
I’d appreciate hearing your thoughts about this medium article describing the use of Lima VM for docker on MacOS.
https://medium.com/@guillem.riera/the-most-performant-docker-setup-on-macos-apple-silicon-m1-m2-m3-for-x64-amd64-compatibility-da5100e2557d
A couple things to start:
That said, after some research into colima, it looks like it wins on I/O. So if you workload is relatively heavy on I/O, then it’s probably worth trying out.
My issue is memory. I just need so many Python interpreters running Flask, FastAPI, and Django (we use all three). On macOS, I need to reserve the memory for the VM, which means I need to balance how much I can run vs what other stuff I want to run on my system. On Linux, there is no VM, so I benefit from all of the disk caching that the kernel does and can get a much better experience, even when running a lot of services (most of those services are idle most of the time).
So switching to colima probably wouldn’t solve my problem, but maybe it would solve yours.