dimitarvp

dimitarvp

My thoughts on macOS vs Linux

Small essay with thoughts on macOS vs. Linux:

I know @Exadra37 is just waiting around the corner to scream at me “I TOLD YOU SO!!!” but I started getting weary of the Mac ecosystem as well.

I like the displays, a lot, and that will not change. I like how snappy the machines are (usually) and I know for a fact that I will buy second generation MacBook Pro M1. They are the uncontested kings of the laptop market today. Battery life is out of this world, performance too, and the damned things almost never turn on their fans to audible levels! I can’t say no to that.

All of that is true and I am not seeing any other company doing anything even remotely good as Apple on these fronts.

BUT… and that’s not a small “but”, sadly… they started to diverge from their UNIX roots too much, to the point that you need scripts and specialized knowledge for both macOS and Linux now, and I don’t like it. Using homebrew commands and various other trickery you can make macOS be very close to Linux… but I am paid to work on apps, not chase a constantly moving target. Maybe I am getting old but I am getting sick of that treadmill.

Don’t get me wrong, Apple are IMO generally on the right path (even software-wise, and here’s where many people would loudly disagree with me) – but they started slipping. Also that thing with hashing every single program you run and sending it to their servers – I don’t like it. I know it’s made with security in mind but they are a corporation and I am sure they got tempted to monetize that info already.

What actually started making me consider going to Linux was the awfully bad market of browser extensions and apps on macOS – everything remotely good is paid and I am sick of it; having a macOS machine is like buying a game which is then also filled with micro-transactions. :frowning: (To be fair though, Linux has the opposite problem; if you have even slightly exotic needs then you have to download some obscure GitHub repo, build the thing yourself and then it doesn’t work 50% of the time… There’s no clear winner between macOS and Linux here.) People are just not that incentivized to create when you have long and tedious (and easily flagging you as a threat) approval processes, it seems. Again, might be good for security but also introduces a singular gatekeeper and I think 2020 has been eye-opening about how unscrupulously the gatekeepers exercise their power.


Thoughts on Linux desktop today.

I am really torn lately, especially after spending some time with my loved new home server (on Manjaro) and got reminded how (mostly) easy Linux is and how insanely fast and lightweight it is. I miss that in my machines!

But it’s not all sunshine and rainbows. X11 (the windowing system of most Linuxes) is a legacy mess where security is an afterthought and simply does not exist. If you install Chrome on Linux, your privacy and security are gone the same instant – stealing info from the clipboard and the screen is a child’s play on Linux. Let’s not mention recording your key presses. And let’s also not mention that it’s relatively trivial to bypass a lock screen… And Wayland (the other competing thing) isn’t much better; I heard it improves things somewhat but it too quickly devolved into a desperate effort to support anything and everything under the sun and is now a new brand of Frankenstein’s monster, just like X11.

I know people like @OvermindDL1 would jump in defense and say that you can make it work but he’s a special breed who can configure these things while he is making his morning coffee while we would still be fine-tuning the thing 3 months later and not have gotten it right. Let’s be real at least. :laughing:


What I want to use from now on and in the future

The solution I am gravitating towards is: have a Mac machine but mostly do your professional work in a headless Linux workstation.

Macs are still very user friendly, still easy to use, still with gorgeous displays and their deteriorating software is still working quite okay. But working on a Mac and deploying to Linux for staging and production is becoming more and more of a chore with time (at least for me).

And, if your Linux workstation is headless, you dodge all (or most? @Exadra37, what do you think?) the security problems with X11 and Wayland in one fell swoop.

So for 2021 – or maybe 2022; I am not in a rush – I plan to start gathering money for an AMD Threadripper Pro workstation (likely the 3975WX Pro in particular) and swallow the fact they are usually OEM machines with very little customizations possible. Or maybe I’ll just build a last-gen Threadripper 2950x workstation – even with 128GB of ECC RAM and a 4TB NVMe SSD I think the whole thing amounts to about 2500 EUR which is peanuts relative to the processing power you are getting.

Anyway! Whichever I choose, when I buy it I plan to just plug it to a display once – until I set up the installation and configure SSH keys – and then just remote to it from my iMac Pro or MacBook Pro M1 (when I buy it). I also plan to install a VPN on my bare-metal home server so I can use my Linux workstation’s compute wherever I am physically.

This also means I have to pick up a machine that can get remotely powered on (in case of power loss). Never researched how that works but hey, I’ll make it work.


As mentioned in the past here – and before my insane treadmill with my previous employer where money was the best I ever got but the stress was too much and the atmosphere was awful – I really want to tone down the tech purchases. But that means investing in long-term tech so you don’t have to think about it for at least 5 years. I aim for 10 years though, we’ll see.

Unlike many others, I am not as hyped about Intel moving to TSMC production (people think this means the next i3 / i5 / i7 / i9 CPUs will beat AMD because of 5/7 nm process) or about Apple’s M1 processors. Pretty sure both things will amount to improvements, sure, but I am still betting on the AMD Threadripper CPUs being the kings of workstations. Especially the Threadripper Pro series combines the best of both workstation and server features.

166 7775 69

Most Liked

AstonJ

AstonJ

What was you machine like when it was new Paul? I bet it was fast as heck :laughing:

I think the point many of us are making is Apple may well be deliberately throttling older Macs because they want people to upgrade. The slowness on my machine for example, there is absolutely zero reason for it - the machine has 64GB of RAM a good GPU, CPU, SSD etc. There is not genuine reason why it should take 30 seconds to open an app, where the UI continually stutters, etc.

Sory about the rant :see_no_evil:

Exadra37

Exadra37

At my previous work I kept seeing my colleagues mentioning it and it was a company doing mobile apps for iOS and Android for big retailers.

Also seen some friends complaint of such, but I don’t have empirical evidence to back it up.

stefan.jarina

stefan.jarina

just my 2 cents.

I also have all my dotfiles in GIT repo (in some complex structure) and all dotfiles are written in a “composable” way.
You can have a private repo including secrets, but that might be dangerous, way better is to have secrets in some vault (e.g. hashicorp vault)
I am then able to simply symlink configs as needed for each system and compose them as I need.
That way all my machines have exactly the same configuration…
I also use ansible, so if I load new server, will just run ansible, which will install all I need + sets up my config files. some ansible playbook can also setup my local pc.

this is how structure looks like

.
├── README.md
├── editors
│   ├── nvim
│   │   ├── init.vim_ex_erl_go_html_js_py_rt
│   │   ├── init.vim_ex_js_erl_html
│   │   ├── init.vim_go_js_py_rb_rt_sc
│   │   └── local_init.vim
│   └── vim
│       ├── vimrc.local
│       ├── vimrc_erl_ex_html_js
│       ├── vimrc_ex_go_html_js_php_pl_py_rb
│       ├── vimrc_ex_go_html_js_py_rb_rt_sc
│       ├── vimrc_ex_go_html_js_rb
│       ├── vimrc_ex_go_js_py_rb
│       ├── vimrc_go
│       ├── vimrc_go_html_js_py
│       ├── vimrc_js_html
│       └── vimrc_js_html_php
├── fish
│   ├── aliases
│   │   ├── desktop
│   │   │   ├── archlinux.fish
│   │   │   └── ubuntu.fish
│   │   ├── mac
│   │   │   └── work_aliases.fish
│   │   ├── server
│   │   │   ├── centos.fish
│   │   │   └── ubuntu.fish
│   │   ├── shared
│   │   │   ├── archlinux.fish
│   │   │   ├── centos.fish
│   │   │   ├── global.fish
│   │   │   ├── mac.fish
│   │   │   └── ubuntu.fish
│   │   └── wsl
│   │       └── home_windows10.fish
│   ├── completion
│   │   └── shared
│   │       ├── docker.fish
│   │       └── exercism.fish
│   ├── config
│   │   ├── desktop
│   │   │   ├── archlinux.fish
│   │   │   └── ubuntu.fish
│   │   ├── mac
│   │   │   └── work_config.fish
│   │   ├── server
│   │   │   ├── centos.fish
│   │   │   └── ubuntu.fish
│   │   ├── shared
│   │   │   ├── archlinux.fish
│   │   │   ├── centos.fish
│   │   │   ├── global.fish
│   │   │   ├── mac.fish
│   │   │   └── ubuntu.fish
│   │   ├── specific_machines
│   │   │   ├── xxx_xxxxx_xx.fish
│   │   │   └── xxxx_xxxxx_xx.fish
│   │   └── wsl
│   │       ├── home_windows10.fish
│   │       └── work_windows10.fish
│   ├── functions
│   │   └── shared
│   │       ├── git
│   │       │   ├── ga.fish
│   │       │   ├── gd.fish
│   │       │   ├── gm.fish
│   │       │   ├── gp.fish
│   │       │   ├── gpom.fish
│   │       │   └── gs.fish
│   │       ├── git.fish
│   │       ├── global
│   │       │   ├── add-key.fish
│   │       │   ├── read_confirm.fish
│   │       │   ├── serve.fish
│   │       │   └── timestamp.fish
│   │       ├── global.fish
│   │       ├── go
│   │       │   ├── goglobpath.fish
│   │       │   ├── gopath.fish
│   │       │   └── listgo.fish
│   │       ├── go.fish
│   │       ├── md
│   │       │   ├── mdless.fish
│   │       │   └── rmd.fish
│   │       ├── md.fish
│   │       ├── mssql
│   │       │   ├── mssql_check.fish
│   │       │   ├── mssql_connect.fish
│   │       │   ├── mssql_create.fish
│   │       │   ├── mssql_destroy.fish
│   │       │   ├── mssql_start.fish
│   │       │   └── mssql_stop.fish
│   │       ├── mssql.fish
│   │       ├── npx
│   │       │   └── npx_aliases.fish
│   │       └── npx.fish
│   └── variables
│       └── global.fish
├── other
│   ├── gemrc
│   ├── gitconfig
│   └── screenrc
├── powershell
│   ├── completions
│   │   ├── deno.ps1
│   │   └── rustup.ps1
│   ├── modules   <tons of my modules, removed for brevity>
│   │   └── SimpleDockerApps
│   ├── profile.ps1
│   ├── profile_mac.ps1
│   └── profile_parallels_windows.ps1
└── scripts   <tons of my scripts, removed for brevity>
    └── rl.rb

Where Next?

Popular Macos topics Top

AstonJ
What was it? What language did you use? How did you find the experience?
9 1207 5
New
AstonJ
Anyone else experience bugs with macOS? I have two that are annoying me… Every now and again after waking from sleep, Safari CPU cons...
10 764 4
New
MikhailPertsev
Hi there! I am a new iMac user (this is the first Apple’s product for me), and I am wondering should I update the mac OS system to the n...
3 1372 3
New
AstonJ
Thought it might be interesting to have a thread for any unusual bugs we might come across…
1 849 4
New
New
AstonJ
As requested by @DevotionGeo, a thread about Apple’s patent regarding a new reconfigurable keyboard… Last month, Apple patented a ne...
6 1450 4
New
CommunityNews
Over the past decade, a large and opaque industry has been amassing increasing amounts of personal data.1,2 A complex ecosystem of websi...
1 1025 3
New
AstonJ
Posting this for future reference :grin: Open Automater &gt; New &gt; Quick Action Change Workflow receives current to no input ...
1 825 0
New
CommunityNews
macOS Monterey Preview. macOS Monterey. Connect like never before. Exciting FaceTime updates. An all-new Safari. Powerful new ways to wo...
5 971 1
New
AstonJ
Just upgraded to macOS Monterey (12.1) and finding ‘live text’ quite annoying! If anyone else wants to turn it off here’s how: System Pr...
11 1137 3
New

Other popular topics Top

AstonJ
What chair do you have while working… and why? Is there a ‘best’ type of chair or working position for developers?
74 4882 41
New
axelson
I’ve been really enjoying obsidian.md: It is very snappy (even though it is based on Electron). I love that it is all local by defaul...
38 4062 19
New
New
AstonJ
Curious to know which languages and frameworks you’re all thinking about learning next :upside_down_face: Perhaps if there’s enough peop...
243 5922 95
New
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
82 6920 31
New
New
gagan7995
API 4 Path: /user/following/ Method: GET Description: Returns the list of all names of people whom the user follows Response [ { ...
7 3059 3
New
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
91 5152 43
New
husaindevelop
Inside our android webview app, we are trying to paste the copied content from another app eg (notes) using navigator.clipboard.readtext ...
1 3243 0
New
First poster: bot
Large Language Models like ChatGPT say The Darnedest Things. The Errors They MakeWhy We Need to Document Them, and What We Have Decided ...
0 2920 0
New