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

Exadra37
On modern versions of macOS, you simply can’t power on your computer, launch a text editor or eBook reader, and write or read, without a ...
New
AstonJ
Thought it might be interesting to have a thread for any unusual bugs we might come across…
New
MikhailPertsev
Hi there! Do you use any “clean up” app like CleanMyMac X ? If yes, what is those apps?
New
MikhailPertsev
Hi there! I recently bought a new mouse pad (HyperX Fury) and it feels like without mouse pad the magic mouse is working better(smoother...
New
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
CommunityNews
macOS Monterey Preview. macOS Monterey. Connect like never before. Exciting FaceTime updates. An all-new Safari. Powerful new ways to wo...
New
First poster: ohm
Q: PHP seems to be missing from this release. A: PHP has been removed in macOS Monterey. Details here: https://developer.apple.com/...
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

Other popular topics Top

AstonJ
If it’s a mechanical keyboard, which switches do you have? Would you recommend it? Why? What will your next keyboard be? Pics always w...
New
ohm
Which, if any, games do you play? On what platform? I just bought (and completed) Minecraft Dungeons for my Nintendo Switch. Other than ...
New
AstonJ
poll poll Be sure to check out @Dusty’s article posted here: An Introduction to Alternative Keyboard Layouts It’s one of the best write-...
New
AstonJ
I ended up cancelling my Moonlander order as I think it’s just going to be a bit too bulky for me. I think the Planck and the Preonic (o...
New
PragmaticBookshelf
“Finding the Boundaries” Hero’s Journey with Noel Rappin @noelrappin Even when you’re ultimately right about what the future ho...
New
PragmaticBookshelf
“A Mystical Experience” Hero’s Journey with Paolo Perrotta @nusco Ever wonder how authoring books compares to writing articles?...
New
wmnnd
Here’s the story how one of the world’s first production deployments of LiveView came to be - and how trying to improve it almost caused ...
New
PragmaticBookshelf
Author Spotlight Mike Riley @mriley This month, we turn the spotlight on Mike Riley, author of Portable Python Projects. Mike’s book ...
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
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 ...
New