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
MacOS Nix Setup (an alternative to Homebrew). I recently got a new Macbook, and began setting up the Nix package manager to install my d...
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
Just over an hour to go… anyone going to be watching it? New Macs? :nerd_face:
New
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
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
I’ve noticed that over the course of several updates my display (on both my MBP screen and my LG5K) has been looking more and more washed...
New
AstonJ
Intel clearly not happy that Apple are now creating their own silicon :081:
New
AstonJ
Here are some easy options on how to run Stable Diffusion on a Mac with Apple Silicon: DiffusionBee The Ultimate Suite of Creative AI ...
New

Other popular topics Top

AstonJ
A thread that every forum needs! Simply post a link to a track on YouTube (or SoundCloud or Vimeo amongst others!) on a separate line an...
New
PragmaticBookshelf
Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch! In just a couple of weeks, build a ray tracer that r...
New
dasdom
No chair. I have a standing desk. This post was split into a dedicated thread from our thread about chairs :slight_smile:
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...
New
PragmaticBookshelf
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
New
AstonJ
If you get Can't find emacs in your PATH when trying to install Doom Emacs on your Mac you… just… need to install Emacs first! :lol: bre...
New
PragmaticBookshelf
Author Spotlight Rebecca Skinner @RebeccaSkinner Welcome to our latest author spotlight, where we sit down with Rebecca Skinner, auth...
New
PragmaticBookshelf
Develop, deploy, and debug BEAM applications using BEAMOps: a new paradigm that focuses on scalability, fault tolerance, and owning each ...
New
RobertRichards
Hair Salon Games for Girls Fun Girls Hair Saloon game is mainly developed for kids. This game allows users to select virtual avatars to ...
New