Ask HN: Pros and Cons of Switching from Linux to M1 MacBook
Hello HN,
I would love to know your thoughts regarding switching from linux to MacBook.
I’m currently using ArchLinux with i3WM highly customizable with shortcuts
I’m currently using ArchLinux with i3WM highly customizable with shortcuts
96 comments
[ 3.7 ms ] story [ 134 ms ] threadThat having been said, I personally prefer the Apple way, because so much of the ecosystem just works in a way that you will never experience with Linux, no matter how much work you put in (but you do lose out on the joy of tinkering with things). It's a matter of preference.
(Whereas, of course - Linux has a certain amount of pain by default).
https://github.com/ianyh/Amethyst
Have you tried it
I do Linux kernel development.
Will that _just work_ on a Mac too?
[1] OS X support for which tends to be a pain point too, while most vendors tend to have some kind of Linux product this is still very much a windows world.
At our company, we do a lot of kernel development. Most devs are issued Macs, some Thinkpads with Windows. Very few run Linux locally, as IT doesn't like it.
We have Linux shell servers for development. They compile much faster than laptops anyway. The actual test systems are separate as well. You don't want to test on the machine you develop on generally (it'd be extremely annoying to not be able to edit code while waiting for the reboot to get the new kernel, and to loose your open windows for every iteration. Also what if it oopses?), and in our case that wouldn't work anyway (special HW).
Most use vim in screen, and VS Code with it's native SSH remote host support is also very nice.
If it works for dozens of our engineers, it can work for you if you're willing.
Agree 100%. It is frustrating at first as I have worked the way I work since forever but over the course of a few weeks I noticed many of the changes were actual improvements saving me time and/or making my life easier.
Not always but a lot of the time the "Apple way" is actually well thought out and reduces friction elsewhere in my workflow. It was a classic case of being blind to my own inefficiencies as that was just what I was used to and it worked.
The nice thing about macOS (and Windows now with WSL) is all the unix/posix tools I was used to on Linux work the same (or near enough) that switching wasn't difficult or particularly painful.
The only thing I really miss when using macOS compared to Linux and Windows is top tier window management. I use Magnet (have also used Amethyst) to make life a little easier but macOS still has the worst implementation of managing windows. I am used to it now so it isn't a huge issue and the benefits of the platform far outweigh this one little area of annoyance but if I could change any one thing about macOS it would be to really overhaul the way windows are managed.
Windows has improved a lot with WSL, but it still feels like your computer is not yours - there are ads and some privacy settings keep getting reverted on updates.
(A Linux user and developer since 1999 myself)
Their attempts to present a simplified interface using the Metro style UI actually make it worse because often it’s just an extra barrier to finding what you really want. Two different start menus now, really? Every time I open the system preferences panel in MacOS now I give a little prayer of thanks.
I had that feeling when I was on macOS as well. Too much of Apple's agenda, pre-installing software I don't need or want.
My lousy Mac experience was probably because I have external display and keyboard, so I don't benefit at all from the good hardware. For me it was just an underpowered laptop (compared to my desktop).
Performance is the icing on the cake.
I just install, checkout, setup symlinks, and done.
Mainly what I customize is to make one computer like the rest of mine. Main examples:
The command key isn't where the Ctrl key is and my hands mess that up. So I flip the key locations.
Identical hotkeys for pulling up a console, opening apps.
Making iterm2 and terminator behave the same.
Identical bash settings.
Etc.
I use a Mac and an Ubuntu machine side by side all day and need them to respond the same to my muscle memory.
Then the M1 came up, which promised a fixed keyboard, great battery life, great performance and backlit keyboard, so I switched over. Turns out, it was exactly as promised! Not much better, but notably not worse as it's often true with windows machines (marketing "8 hours" is usually "maybe 4-5 hours).
On the hardware side, I love it so far. Battery life when indoors is usually 10-12h (running webdev tools), but I noticed that outdoors at max brightness and with the same tools it's more like 7-8 hours. The only thing I'd change of the computer is the glossy screen for a matte one, so performance in the sun was even better. I don't bring my charger with me anymore when working from cafes, which is amazing.
On the software side, I knew (from my work machine) what kind of beast I was against. I still haven't found a way to properly stop Cmd+Q from killing the current app, which is way too close to Cmd+W for comfort. I will never like that closing the last window of an app doesn't actually close the app. I deeply dislike how many hoops I have to jump to install normal software from the internet. Nothing is a major stopper, just small inconveniences with no real "fix" since it's a walled garden.
I felt the change wasn’t all that big. I got my Firefox, terminal, homebrew replaced apt, etc. All the command line tools are there.
Under Linux, I just used XFCE so moving to macOS wasn’t a big deal. But lately I’m using Amethyst which is great.
The hardware is very nice. Incredible battery life and no driver issues ever.
But seriously, why don’t you try it?
I like Apple hardware and used it extensively between 2006-2012 but I "worry" I am stuck in my current setup as long as I make my money with it.
Maybe I could switch one day when productivity is not that important any more.
That said, since you like i3, let me point out right away that window management on the Mac does _not_ work like you want it, and likely never will.
I use Moom (https://manytricks.com/moom/) for manually tiling windows since I can make it 99% consistent with what I have in Windows and Elementary, but I've used Amethyst (https://github.com/ianyh/Amethyst) when I felt like "going back" to i3, and it is sort of close enough.
That said, another important thing (if you intend to do development) is to absolutely not mess around with /usr/local and whatnot and understand how brew (https://brew.sh) works. Use pyenv, rbenv, etc. instead of messing about with system runtimes. Learn to live with the built-in terminal unless you absolutely must use iTerm (which I've stopped using because the built-in one is now plenty good enough), etc.
I also have some (old, and in need of update) tips over at https://taoofmac.com/space/howto/switch, but they're more focused on the Windows crowd, so take them with a pinch of salt.
Its heritage is from BSD ports but, contrary to some reports, it's well alive, stable and kicking ;-)
Why?
* One that actually makes sense. In Terminal.app by default it just creates a copy of the existing pane so you can see your commands and outputs twice, each taking up half of the real estate. Seriously, who needs that for anything at all?
Defaults are Ctrl+ alt + e: left 2/3, r: right 2/3, d: left 1/3, f: middle 1/3, g: right 1/3, left-arrow: left half, right-arrow: right half
As for iTerm2, I found its native tmux integration pretty unique.
One thing I would say is that macbook is best for people who want everything to work right outside of the box and you have a lot of commercial applications support on MacBook especially Adobe Suite.
But for Linux if you are into customization or making it more personalized to your needs then I would say Linux would be best choice but you might end up spending a lot of breaking and fixing things in that process which might use a lot of your time but its worth it since you’ll learn a ton in that process
Linux (with an LTS release) just works, to the point where it is almost boring - which is a good thing for a work machine. OSX on the other hand would frequently break things to the point where I feared software updates. The Catalina upgrade for example killed my install and I had to format my drive.
Sorry for singling you out with this rant, but personally I think more development needs to be done on lower specced computers for user empathy. Too much software is written to run on the expensive computers software engineers buy, but struggles on the computers regular people own. 16 gigs isn't "crazy" in 2021 - the median computer doesn't have 32 gigs of ram, or 16 gigs of ram. If you wander through a Best Buy some time, take a look at what they sell. 4-8 gigs is the norm. We should be developing our software accordingly. (And I’m as guilty of this as everyone else. I ripped out some beautiful css transitions I’d made a few years ago from a client webpage because they couldn’t play smoothly on the computers of our users.)
After 5+ months, the shortcut (involving control/option/command instead of ctrl/alt) and keyboard layout (for characters like äöüß»«) still drives me crazy. Daily. It's super hard to re-train your muscle memory regarding complex shortcuts from IDEs such as VS Code and IntelliJ. I've found myself to rather use the mouse for certain tasks because I cannot recall the correct shortcut.
In those 5 months, I've probably installed 5 macOS upgrades each requiring >6GB download and >30min installation time.
Besides that, I'm very happy with the hardware: overall quality, great touchpad, great performance, no fan in the MacBook Air.
If it's for work and sticking to defaults isn't your thing, then you're not going to enjoy it. You'll end up using it as a proxy to do stuff in Linux one way or another. Assuming you at least tried Hackintosh or macOS VM before to even consider it.
Personally I'm using Solus and as far as GUI goes it's pretty much vanilla Budgie, it's command line stuff that is somewhat tailored for me, that's all. I've been on the extremes and this is what I ended up with, customizing things is tiresome and a massive time-sink.
You can buy an M1 MacBook Air to try, and return it to Apple within two weeks if you don't like it (or want to switch to another model like the pro).
I think the M series chips could be the new standard. However, I am skipping this generation. The Gen 1 products by Apple have historically been under supported and left in the dust after the next generation comes out. I would wait if I were you.
Check out what Louis Rossmann has to say about Apple hardware: https://www.youtube.com/watch?v=AUaJ8pDlxi8
I'm very unhappy with macos, and hardware detection is a big issue.
None of my logitech Mx Master worked properly (1, 2 and 3) as Apple enforces a weird acceleration curve on the wheel, even when installing logitech's software. The latest ones are compatible bluetooth but support for these over bluetooth isn't good at all, so I have to use the unifying thingy that logitech gives you.
My Bluetooth headset (Bose 700) has this ridiculous bug where when switching codec (starting video call for instance), or turning the headset on and off will move the balance left or right. So for a while I was getting annoyed at bose because my headset was "broken". No, it turns out it's a software bug so annoying that someone wrote an app to fix it https://www.tunabellysoftware.com/balance_lock/ I remember finding a bug report from 2013, Apple still hasn't fixed it. It's almost as if they preferred you used their headphones.
Then there's the user experience, and it becomes more of an opinion at this point. Note that I used Gnome, which isn't to the taste of a lot of people so I might be an exception. But with that in mind:
Switching window with command tab is unintuitive, instead of switching from one window to another, you switch from one app to another. So going from one firefox window to another is a pain to do with a keyboard shortcut only (actually that's also gnome's default behaviour).
Window management in general is at best very clumsy. I still don't get why you'd want to maximise a window if it makes that application full screen. Splitting your screen to put two windows side by side requires some obscure long press on the green button (or is it with a key modifier?), or to install yet another program such a Spectacle.
The file explorer goes to great length to hide the root filesystem from you. It's also hard to convince it to open two windows so you can copy paste files from one folder to the next.
So none of that is related to the M1 part of your question, and on the plus side these new chips look very attractive. But heck I miss my gnome configuration.
edit: balancing my opinion a bit: on the plus side the concept of "App" that is just one file in a specific folder is very relaxing and a great user experience. As dev we're kind of forced to use alternative methods to install software, such as brew but I understand that's an acceptable trade-off for Apple
The battery life is amazing, and I haven't heard the CPU fan yet (seriously, I compile things a lot, but the CPU fan remains idle and the laptop is cold). Real "Esc" key and a normal keyboard is a big plus.
In my case one external display was enough (as I only have one at home), also 16GB of RAM turned out not to be a problem for what I do so far (Go/C++/Python, some backend, some frontend, some IoT). Docker works fine, so does the rest of the tools I normally use.
As I mostly use terminal-based apps or VSCode - I didn't even notice any difference. It might be just me, but over the last few years I decided to get equally comfortable/productive with both macOS and Linux, so I trained myself to use the tools that work the same way on both platforms. So far it was well worth it.
https://www.vmware.com/products/fusion.html
From your list I've only tried VirtualBox and the experience wasn't so good, bad performance and many outright crashes.
Fusion was quite pleasant to use for my main work system. Make sure you give it enough RAM _and_ that you keep enough for the host, especially if you intend to also use it at the same time (I used to do 8GB and 8GB).
I started trying macos a few weeks ago. If I'm going to go macos, I'm going to get one of the next macbooks. Before I drop £2.5-3k on a laptop almost entirely for the OS, I want to know if I actually like the OS. I bought the absolute cheapest mac mini with a view to sell it later.
It would take too long to explain why I want to switch, but essentially both windows and linux have different pain points that I'd just lost the will to work around. A key point is multidpi and fractional scaling. Windows is buggy. Linux/xrandr needs no explaination. My experience with wayland was not good.
It sounds trite, but macos just works. This is all I care about. Unlike in win/linux, I can spend my time doing things I care about, rather than configuring my computer. The most significant frustration is there's no way to easily switch windows from the keyboard à la twm. To tile the windows I use rectangle.
On to programming. I'm currently hacking with elixir, which works fine. I'm still using alacritty as my terminal, with fish, and haven't had any problems yet.
If everything continues as it is, at the end of the year I'll sell the mini and by a macbook.
As a general non-development computer user (i.e. using standard office/productivity apps), I really enjoy working within the Apple ecosystem. As others have said, if you work within the ecosystem the way it was intended, it's a very positive experience. If you try and fight it, or treat it as Windows/Linux, your experience will be less positive (similar to if you try and treat Gmail as if it were Outlook). I'm a big user of multiple desktops and gestures.
For development, I actually use VSCode in remote SSH mode (which is absolutely incredible). I have a reserved t3a.xlarge Linux instance running in AWS which I basically do all my development on. It's backed up once a day using AWS Backup. Disclaimer is that I do this through my company so I enjoy a significant tax break on all of this (as a business expense). I can imagine that you might not want to spend your own money to do this.
For me, this means my development environment is hermetically sealed and I don't get any clashes between my user applications and development applications. I also write a lot of x86 specific software in CPP which runs on Linux. Moving between developing on MacOS with Clang (I always had problems with GCC on MacOS) to Linux with GCC was tricky. The eventual move to Arm by Apple would make this even harder.
As a general rule, I try and favour cloud services as much as possible and keep minimal data actually on my machine. I like the idea that I could throw my laptop under a bus and be up and running again very quickly (I basically need a browser, a terminal, and LastPass - any other apps are a bonus). Again, for me the driver is that if I don't have a functioning machine, I can't work and can't earn money. I don't particularly care who has my data (within limits).
Again, I have a specific set of circumstances and use cases but this is my experience.
Edit: actually they've published a universal binary now which should work natively on M1.
I strongly recommend it especially if you have other apple devices because the ecosystem _just works_
I also switched permanently from Ubuntu on an X1 Carbon - docked into a 4k screen.
Unit tests and builds run faster, VS Code for both client and server dev is very responsive (3-4 react / python projects open at once with the language servers running), battery life is out of this world - I don't even pack my charger when I'm out on the road all day.
The machine just feels very snappy - even with 20+ apps open, videos playing, 50 or so browser tabs, watchdog running for dev (css, uvicorn). I feel like I spend a lot less time waiting on the machine. No fan spinning and barely any heat.
I really enjoy switching back now to using Microsoft Office and the Adobe Suite instead of the OSS alternatives.
I don't think RAM is like-for-like comparable in terms of capacity, because I see a lot less memory pressure on the 8GB air (I didn't want to wait the 2 weeks for the 16GB delivery) than on my 16GB i7 X1.
The disadvantages come down to architecture compatibility (problems building cryptography and numpy from pypi which was resolved). I offset this by also running a dev server environment on my HP Micro (with ESXi and a bunch of docker machines) over the LAN.
I've since switched my primary desktop to an M1 Mini (16GB) driving 2x 4k screens, and will use the Air for on-the-road work and personal browsing.
I still have the X1 Carbon sitting on my desk - but find myself using it less and less.
The only other disadvantages are number of USB-C ports on the Air - you'll probably want a hub with power pass-through. The display on the air also isn't the brightest - but still comparable to the X1. The pro is better in this regard. Third disadvantage is inability to access high-end GPU if you require one.
There is no real cost argument against the M1 - I don't even know how to spec an equiv X1 Carbon with similar performance, but even customizing the upgrade to a similar WQXGA display and 400 nits takes you to $3k+ (AUD) while the M1 air was $1950 (with 512GB). Leaves you change to get an x86 server to put on the LAN [0].
I'm a huge, huge fan of the M1 and endorse it to everyone I know. It really is a game-changer.
[0] Geekbench for the intel i7 i7-10510U in the X1 shows 992 single core score 3106 multicore, vs 1700 and 7375 for the M1 air. The display is 1440p (vs 1600) and 300 nits vs 400
On the Air right now I have 20+ apps open (Firefox, Brave, Chrome, Safari, Slack, Signal, WhatsApp, Microsoft Todo, Excel (4 sheets open), Mail, Calendar, VS Code (2 projects open), iTerm (8 tabs), Postico, Datagrip, Contacts, Messenger, Spotify, Calibre, Docker for Mac (4 containers running)
Memory used is 6.47GB of 8GB physical, cached filed 1.2GB, swap used 8.15GB
It's running more than fine.
It's why I don't think you can compare with other systems in terms of RAM capacity - there is no way I would get away with what I have open now on an 8GB machine running Ubuntu desktop
The first 2 weeks were not pleasant and I almost returned the Mac. But I gradually got used to it, kept it, and did finish the emulator project, which now runs on little-endian CPUs too.
Now, 15 years later, I have dumped all my Windows machines, and while I use Linux on cloud VMs, I'd never try to get Linux running on a personal system. Every time I have tried (4-5x in the last 15 years), it has always turned into a time sink, with various things not working, and I just give up.
I am not big into customizing my environment. That also can become a huge time sink, and to me, it's for little gain. I need Emacs, some command line language tools, and I'm good.
Where Mac shines for me is: a) everything works without a lot of esoteric research into why my wireless breaks after a sleep (for example); b) Apple has GUI tools to do system administration; c) if I lookup how to do something with OSX, the answers are all mostly relevant. If I lookup how to do something unusual with Linux, like why my wireless doesn't work after sleep, there are many answers, but they are all dependent on which distribution of Linux is used, how it is configured, which exact version it is, what hardware I'm using, what rev of hardware I'm using, etc. It's just a lot more complicated.
I love Linux, don't get me wrong. I just hate sysadmining it. When I did it regularly because I owned a web company and had to nurse 5 servers, Linux sysadmin was easier because I had to do it, did it often enough that I didn't forget things, and had control of the configuration. But sysadmining a Linux laptop is a pain that I'd rather avoid by just using a Mac.
Sometimes you just want something that works right out of the box