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.

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

First poster: bot
Hackers jailbreak Apple’s T2 security chip powered by bridgeOS - Report Cyber Crime. The Apple T2 security chip has finally been jailbro...
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...
New
AstonJ
I think we need a macOS rants thread - just for those little things that bug us :face_with_symbols_over_mouth: Feel free to start dedica...
New
AstonJ
Posting this for future reference :grin: Open Automater &gt; New &gt; Quick Action Change Workflow receives current to no input ...
New
AstonJ
This used to be easy - simply drag whatever files you want to onto a Time Machine disk. Now, macOS reserves the entire APFS disk for Time...
New
CommunityNews
macOS Monterey Preview. macOS Monterey. Connect like never before. Exciting FaceTime updates. An all-new Safari. Powerful new ways to wo...
New
AstonJ
Just writing this up in case it helps anyone else because it wasn’t automatic. First, connect you iPad to your Mac via a cable. On your...
New
AstonJ
If you want a quick and easy way to block any website on your Mac using Little Snitch simply… File &gt; New Rule: And select Deny, O...
New
AstonJ
For anyone else who finds the large number of recent items annoying when right-clicking the finder icon on Mac, simply: System Prefs &gt...
New
AstonJ
Just looking through my settings and noticed that Help Apple Improve Search was checked - yet I am almost certain that I did not opt-in t...
New

Other popular topics Top

Devtalk
Reading something? Working on something? Planning something? Changing jobs even!? If you’re up for sharing, please let us know what you’...
1033 17470 383
New
AstonJ
What chair do you have while working… and why? Is there a ‘best’ type of chair or working position for developers?
New
malloryerik
Any thoughts on Svelte? Svelte is a radical new approach to building user interfaces. Whereas traditional frameworks like React and Vue...
New
New
PragmaticBookshelf
Rails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single...
New
First poster: joeb
The File System Access API with Origin Private File System. WebKit supports new API that makes it possible for web apps to create, open,...
New
Help
I am trying to crate a game for the Nintendo switch, I wanted to use Java as I am comfortable with that programming language. Can you use...
New
New
PragmaticBookshelf
Author Spotlight: Karl Stolley @karlstolley Logic! Rhetoric! Prag! Wow, what a combination. In this spotlight, we sit down with Karl ...
New
First poster: bot
zig/http.zig at 7cf2cbb33ef34c1d211135f56d30fe23b6cacd42 · ziglang/zig. General-purpose programming language and toolchain for maintaini...
New