MacOS for developers: Pain points.
--
I’ve heard people saying MacOS has a good UX, and that on MacOS things “just work”, while on Linux you have to fix things a lot.
I’ve been using MacOS for 2 years (2019–2021) and I encountered numerous problems.
Here are my examples of basic things not working.
1) “pip install” works, but executables not in PATH
$ pip3 install jupyterlab
[...] success$ jupyter-lab
zsh: command not found: jupyter-lab
There is an old stackoverflow question, but in 2021 I still faced this problem…
I had to find Python
folder in ~/Library
, and add bin
folder for Python 3.8
to PATH
(so for newer versions I’ll have to do it again… Wow so handy…)
export PATH="$HOME/Library/Python/3.8/bin:$PATH"
2) Git rename lowerCase to upperCase
Say you want to rename app.js
to App.js
and commit to git
.
Easy enough? Not for MacOS… As it’s not strictly case sensitive…
Prepare for some extra work…
https://stackoverflow.com/a/3011723/1657101
3) Installing apps: no official package manager
There is no apt install
, prepare for the manual download + “drag n drop” experience… And GUI installers… And then manually adding the app to the PATH
…
VSCode
installation instructions for Mac:
To install an app you have to drag and drop. For example:
Then you have a multistep installer like on Windows.
For example, here is Miniconda3
installer:
After the installation conda
is not in PATH:
Cherry on the pie: MacOS won’t allow you to open apps downloaded from web by default
You have to open file manager, right click the file, then click “open” now it will show you the “open anyway” button.
Alternative to manual download: brew
brew
is a 3rd-party package manager for Mac.
I did not enjoy brew
as much as apt-get
on Ubuntu: brew
is slow, often throws errors.
App Store
App Store simply has almost no apps for developers: no git
, no nodejs
, no miniconda
.
4) Want to compile a C
file in terminal? Requires XCode GUI…
You have to install Xcode
— “the big ugly software development GUI”.
And you can’t install it from terminal! You have to open App Store
GUI…
5) Uninstalling apps
Should be an easy and obvious thing… Nah, you have to google how to do it…
Turns out, in the Applications
folder, you just select Move to Trash
.
Sounds easy, but is it really uninstalling the app?
No, there is another guide for “completely uninstalling apps”:
You may need to delete the app’s preferences from your Library folder.
First, you need to access the Library folder — this has been hidden by default since Mac OS X 10.6…
Finally, there are 3rd party uninstaller apps (!)…
There are shareware utilities that promise to do all the hard work of tracking down errant app files and delete them for you.
[…] like CleanMyMac X, Uninstaller, AppCleaner, AppDelete and CleanApp.
(quotes are from a macworld article).
6) It is not possible to completely hide the bottom panel (“Dock”)
On Mac at the bottom of screen you have a panel with all the useless apps: Siri, Safari, FaceTime, Apple TV, etc.
Guess what, you can’t get rid of it (completely)!
Turning it off completely is pretty much a no-go without breaking OS X in the process.
You can hide it, but again, not completely… 😂 (it will popup when your mouse is at the bottom of the screen).
The best I can suggest is keeping the dock hidden, and make the size as small as possible so you’re less likely to trigger it.
Source: stackoverflow.
7) Unix commands are different from Linux: mv, ps, sed
I want to sort processes by cpu usage, stackoverflow answer:
But on MacOS that simply doesn’t work, as ps
has no --sort
option:
$ ps --sort=-pcpu
ps: illegal option -- -
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
[-g grp[,grp...]] [-u [uid,uid...]]
[-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
ps [-L]
mv
multiple files: syntax is different
8) Charging from the left side of laptop results in 400% CPU load by kernel_task
9) You can’t delete Apple TV, Safari, QuickTime
The “Delete” button for all the Apple apps simply doesn’t exist.
Conclusion
MacOS, like any other OS, has many pain points for development: often things just don’t work out of the box.
My impression is that MacOS provides a smoother developer experience than Windows, but not as good as Linux (e.g. Ubuntu).
Especially, if you like working with Terminal.
MacOS is actually very GUI-centered: all Settings are in GUI, apps are installed via GUI. There’s almost nothing you would do with MacOS via Terminal. When you google “how do I … on MacOS”, prepare for N steps with GUI screenshots, rather than running a command in Terminal.