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

AstonJ
What was it? What language did you use? How did you find the experience?
New
OvermindDL1
So it seems that Apple removed the network firewall API a while back and replaced it with another, firewall apps adapted, and come to fin...
New
AstonJ
Apparently Apple is working on new Mac Pros that will be half the size of current Mac Pros… As part of the transition to Apple Silicon,...
New
First poster: ohm
Docker fails to launch on Apple Silicon · Issue #4733 · docker/for-mac. Fails to launch on Apple Silicon (unsurprisingly given it's so n...
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
First poster: AstonJ
https://twitter.com/patrickwardle/status/1349488392732491776 This thread was posted by one of our members via one of our news source t...
New
AstonJ
Posting this for future reference :grin: Open Automater &gt; New &gt; Quick Action Change Workflow receives current to no input ...
New
AstonJ
I almost did last night, but then had a change of heart - might just see what others think or wait for the initial set of bug-fixes first...
New
AstonJ
New Macs look good! Tho I hate the notch - why does it have to be so big? Will be interested in seeing reviews of real world usage and w...
New

Other popular topics Top

PragmaticBookshelf
Design and develop sophisticated 2D games that are as much fun to make as they are to play. From particle effects and pathfinding to soci...
New
DevotionGeo
I know that -t flag is used along with -i flag for getting an interactive shell. But I cannot digest what the man page for docker run com...
New
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
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...
New
dimitarvp
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...
New
mafinar
Crystal recently reached version 1. I had been following it for awhile but never got to really learn it. Most languages I picked up out o...
New
husaindevelop
Inside our android webview app, we are trying to paste the copied content from another app eg (notes) using navigator.clipboard.readtext ...
New
New
New