(no title)
0xfaded | 4 months ago
Edit: okay, that garnered more attention than I expected, I guess I owe a qualification.
1. Everything is just slightly different. I had to split all my dot files into common/Linux/Mac specific sections. Don't expect to be able to clone and build any random C++ project unless someone in the project is specifically targeting Mac.
2. Not everything is supported natively on arm64. I had an idea and wanted to spin up a project using DynamoRIO, but wasn't supported. Others have mentioned the docker quirks.
3. The window manager. I'm not a fan of all the animations and needing to gester between screens (and yes, I've been down the hotkeys rabbit hole). To install a 3rd party window manager you need to disable some security setting because appearantly they work by injecting into the display manager and calling private APIs.
So my person takeaway was that I took the openness of the Linux ecosystem for granted (I've always had a local checkout of the kernel so I can grep an error message if needed). Losing that for me felt like wearing a straightjacket. Ironically I have a MBP at work, but spend my day ssh'd into a Linux box. It's a great machine for running a web browser and terminal emulator.
coldtea|4 months ago
Sounds more like a you problem, probably due to unfamiliarity. There are endless options for local dev on a Mac, and a huge share of devs using one.
heavyset_go|4 months ago
Yes, I know about Yabai and the other things that modify the existing window manager. The problem is the window manager itself.
Outside of the windowing system, running native Linux if you're deploying to Linux beats using an amalgamation of old BSD utils + stuff from Homebrew and hoping it works between platforms, or using VMs. The dev tools that are native to Linux are also nice.
When it comes to multiple monitors, I want a dock on each monitor. I can do that in Plasma, but I can't in macOS, unless I use some weird 3rd party software apparently.
Syntaf|4 months ago
SomeUserName432|4 months ago
It was a bit of a struggle to get used to it, coming from windows.
The only thing I really miss now is alt-tab working as expected. (It's a massive pain to move between two windows of the same program)
rtpg|4 months ago
Really wish someone could have figured out something a bit better in that space in particular. Docker compose is a "least worst" option for setting up a project with devs when many are uncomfortable with other solutions, but it really takes the oxygen out of anything that might "work"
windexh8er|4 months ago
I don't. I'm constantly shifting between my Linux desktop and a Mac for work. I also picked up a personal MBP with as much RAM as Apple allowed (still far overpriced and limited options) about a year and a half ago. While I don't regret it, it's still not my first choice.
If there's "endless options for local dev on a Mac" then I don't know how to describe the flexibility that a decent laptop running Linux gives you, comparatively. Honestly I think the Mac only excels in one area still today and that is: the breath of their paid for software library. The polish of Mac used to be the draw, but OS X has degraded over the years as Apple shifts to unify IOS and OS X. And don't get me started on the garbage that iCloud is that Apple continues to force feed harder and harder having, clearly, taken cues from the Windows team in Redmond.
I'm really hopeful we start to see more ARM options in non-Mac laptop formats soon. Because, while trivial, it is nice to be able to run small models for a variety of reasons.
It is interesting though that I see a "huge share of devs" using a Mac to write code targeting Linux environments when they could actually simplify their development environment by ditching Mac. To each their own.
neya|4 months ago
godelski|4 months ago
The biggest problem with Linux is poor interfaces[0] but the biggest problem with Apple is handcuffs. And honestly, I do not find Apple interfaces intuitive. Linux interfaces and structure, I get, even if the barrier to entry is a big higher, there's lots of documentation. Apple less so. But also with Apple there's just things that are needlessly complex, buried under multiple different locations, and inconsistent.
But I said the biggest problem is handcuffs. So let me give a very dumb example. How do you merge identical contacts? Here's the official answer[1]
Well guess what? #2 isn't an option! I believe this option only appears if you have two contacts that are in the same address book. Otherwise you have the option "Link Selected Cards". Something that isn't clear since the card doesn't tell you what account it is coming from and clicking "Find duplicates" won't offer this suggestion to you. There's dozens of issues like this where you can be right that I'm "holding it wrong", but that just means the interface isn't intuitive. You can try this one out. You can try this out. Go to your contacts, select "All Contacts" and then by clicking any random one try to figure out which address book that contact is from. It will not tell you unless you have linked contacts. And that's the idiocracy of Apple. Everything works smoothly[2] when you've always been on Apple and only use Apple but is painful to even figure out what the problem even is if you have one. The docs are horrendous. The options in the menu bar change and inconsistently disappear or gray out, leading to "where the fuck is that button?".So yeah, maybe a lot of this is due to unfamiliarity, but it's not like they are making it easy. With Apple, it is "Do things the Apple way, or not at all". But with Linux it is "sure whatever you say ¯\_(ツ)_/¯". If my Android phone is not displaying/silencing calls people go "weird, have you tried adjusting X settings?" But if my iPhone is not displaying/silencing calls an Apple person goes "well my watch tells me when someone is calling" and they do not understand how infuriating such an answer is. Yet, it is the norm.
I really do want to love Apple. They make beautiful machines. But it is really hard to love something that is constantly punching you in the face. Linux will laugh when you fall on your face, but it doesn't actively try to take a swing or put up roadblocks. There's a big difference.
[0] But there's been a big push the last few years to fix this and things have come a long way. It definitely helps that Microsoft and Apple are deteriorating, so thanks for lowering the bar :)
[1] https://support.apple.com/guide/contacts/merge-contact-cards...
[2] Except it actually doesn't
lholden|4 months ago
The hardware was great, but life on a Mac always felt a bit convoluted. Updating the OS was especially frustrating as a software developer because of all the interdependent bits (xcode, brew, etc) that often ended up breaking my dev environment in some way. It also always amazed me at the stuff that was missing. Like, how isn't the default terminal app fully functional after all these years? On the plus side, over the time I used it they did add tiling and the ability to hide the notch.
Finally at the start of the year I moved back to Linux and couldn't be happier. Had forgotten just how nice it is to have everything I need out of the box. The big thing I miss is Affinity Photo, though that looks like it's in the middle of dying right now.
krisgenre|4 months ago
* Finder - this is my most hated piece of software. It doesn't display the full file path and no easy way to copy it
* I still haven't figured out how to do cut/paste - CMD + X didn't work for me
* No Virtualbox support for Apple Silicon (last checked 1 year ago)
* Weird bugs when running Rancher Desktop + Docker on Apple Silicon
But still Apple hardware is unbeatable. My 2015 Macbook pro lasted 10 years and the M1 is also working well even after 4 years.
skydhash|4 months ago
linehedonist|4 months ago
stevage|4 months ago
But really, I just don't use that many desktop apps (or at least, not generic ones) so I don't have much of an issue on MacOS.
abrookewood|4 months ago
cromka|4 months ago
thewebguyd|4 months ago
Specifically for this, there's Aerospace (https://github.com/nikitabobko/AeroSpace) which does not require disabling SIP, intentionally by the dev.
For using the vanilla macOS workspaces though, if you avoid using full screen apps (since those go to their on ephemeral workspace that you can't keybind for some stupid reason), if you create a fixed amount of workspaces you can bind keyboard shortcuts to switch to them. I have 5 set up, and use Ctrl+1/2/3/4/5 to switch between isntead of using gestures.
Apart from that, I use Raycast to set keybindings for opening specific applications. You can also bind apple shortcuts that you make.
Still not my favorite OS over Linux, but I've managed to make it work because I love the hardware, and outside of $dayjob I do professional photography and the adobe suite runs better here than even my insanely overspeced gaming machine on Windows.
nextos|4 months ago
It will be interesting to see how this evolves as local LLMs become mainstream and support for local hardware matures. Perhaps, the energy efficiency of the Apple Neural Engine will widen the moat, or perhaps NPUs like those in Ryzen chips will close the gap.
foxandmouse|4 months ago
radley|4 months ago
disgruntledphd2|4 months ago
Some of this is probably brew not being as useful as apt, and some more of it is probably me not being as familiar with the Mac stuff, but it's definitely something I noticed when I switched.
The overall (graphical) UI is much fluider and more convenient than Linux though.
monegator|4 months ago
My 2012 MPB still lives on running debian (not ideal because some driver quirks, but miles better in terms of responsiveness and doing actual work on it than whatever OSX i could put on it)
I honestly agree with the parent. I'd love a macbook M because the hardware is simply fantastic, but if i can't put debian on it, then i'll pass
tannhaeuser|4 months ago
I had been a Linux notebook user for many years and have praised it on this board years ago. But today the Linux desktop has regressed into a piece of trash even for basic command line usage while providing zero exclusive apps worth using. It's really sad since it's unforced and brought upon Linux users by overzealous developers alone.
Mac OS trounces Linux in absolutely every way on the desktop it's not even funny: performance, battery life, apps, usability, innovation. Available PC notebook HW is a laughable value compared to even an entry level Apple MacBook Air. Anecdata but I have no less than five "pro" notebooks (Dell Lattitude, XPS, and Lenovo Thinkpad) come and go with basic battery problems, mechanical touchpad problems, touchpad driver issues, WLAN driver issues, power management issues, gross design issues, and all kind of crap come and go in the last five years so I'm pretty sure I know what I'm talking about.
The one thing Mac isn't great for is games, and I think SteamOS/Proton/wine comes along nicely and timely as Windows is finally turning to the dark side entirely.
delbronski|4 months ago
lavp|4 months ago
Unfortunately I do a lot of C++… I hate the hoops you have to go through to not use the Apple Clang compiler.
devilsdata|4 months ago
Here's my repository: https://github.com/lkdm/dotfiles
I use Linux at work and for gaming, and Mac OS for personal stuff. They both build from the same dotfiles repository.
Some things I've learned is:
- Manually set Mac's XDG paths to be equal to your Linux ones. It's much less hassle than using the default system ones.
- Use Homebrew on both Linux and Mac OS for your CLI tools- Add Mac OS specific $PATH locations /bin, /usr/sbin, /sbin
- Do NOT use Docker Desktop. It's terrible. Use the CLI version, or use the OrbStack GUI application if you must.
- If you use iCloud, make a Zsh alias for the iCloud Drive base directory
- Mac OS ships with outdated bash and git. If you use bash scripts with `#!/usr/bin/env bash`, you should install a newer version of bash with brew, and make sure Homebrew's opt path comes before the system one, so the new bash is prioritised.
I hope this is helpful to you, so feel free to ask me anything about how I set up my dotfiles.
saltcured|4 months ago
My work got me a similar M4 MacBook Pro early this year, and I find the friction high enough that I rarely use it. It is, at best, an annoying SSH over VPN client that runs the endpoint-management tools my IT group wants. Otherwise, it is a paperweight since it adds nothing for me.
The rest of the time, I continue to use Fedora on my last gen Thinkpad P14s (AMD Ryzen 7 PRO 7840U). Or even my 5+ year old Thinkpad T495 (AMD Ryzen 7 PRO 3700U), though I can only use it for scratch stuff since it has a sporadic "fan error" that will prevent boot when it happens.
But, I'm not doing any local work that is really GPU dependent. If I were, I'd be torn between chasing the latest AMD iGPU that can use large (but lower bandwidth) system RAM versus rekindling my old workstation habit to host a full size graphics card. It would depend on the details of what I needed to run. I don't really like the NVIDIA driver experience on Linux, but have worked with it in the past (when I had a current gen Titan X) but also did OpenCL on several vendors.
kristianp|4 months ago
1-more|4 months ago
Highly recommend doing nix + nix-darwin + home-manager to make this declarative. Easier to futz around with.
unshavedyak|4 months ago
Though if you don't like Nixlang it will of course be a chore to learn/etc. It was for me.
cyrialize|4 months ago
I've poked around articles and other posts about this, but I'm not sure I quite get it.
If I just need to install packages, would brew just work for me?
I have a collection of bash scripts in my dotfiles for setting things up, and I've been meaning to adapt them for my linux laptop. It seems like Nix may be helpful here!
martypitt|4 months ago
I'm often envious of these Macbook announcements, as the battery life on my XPS is poor (~2ish hours) when running Ubuntu. (No idea if it's also bad on Windows - as I haven't run it in years).
Thanks for the heads-up.
coldtea|4 months ago
MacOS is great for development. Tons of high profile devs, from Python and ML, to JS, Java, Go, Rust and more use it - the very people who headline major projects for those languages.
2ish hours battery life is crazy. It's 8+ hours with the average Macbook.
root_axis|4 months ago
ElijahLynn|4 months ago
I much prefer a framework and the repairability aspect. However, if it's going to sound like a jet engine and have half the battery life of a new m series Mac. Then I feel like there's really no option if I want solid battery life and good performance.
Mac has done a great job here. Kudos to you, Mac team!
acomjean|4 months ago
dent9|4 months ago
For your dotfiles there's not too many differences just make a separate entry point for zsh that only includes the zsh + macOS things (a few system calls are different in macOS) and then set your .zshrc to load the zsh + macOS version instead of the Linux or "universal" one. This is trivial if you've split your dotfiles into multiple separate files to import individually from a central master file per OS.
For window management you want to use CMD + ` to switch windows in the same app and CMD + Tab to switch apps. You also want to utilize the touch gestures for App Expose and Mission Control.
The only thing that's still wonky is the touchpad Natural Scroll vs the mouse wheel scroll, there's a third party "Scroll Reverser" app that can give you normal mouse wheel scroll and Natural Scroll on the touchpad at the same time. Hopefully some day Apple will make that a native feature.
Stop trying to install third party window managers.
konart|4 months ago
What are the differences though? I have mbpr and a pc with Fedora on it and I barely see any differences aside from sandboxing in my atomic Kinoite setup and different package manager.
People often hating on brew but as a backend dev I haven't encountered any issues for years.
leakycap|4 months ago
There isn't a "dev switch" in macOS, so you have to know which setting is getting in your way. Apple doesn't like to EVER show error alerts if at all possible to suppress, so when things in your dev environment fail, you don't know why.
If you're a seasoned dev, you have an idea why and can track it down. If you're learning as you go or new to things, it can be a real problem to figure out if the package/IDE/runtime you're working with is the problem or if macOS Gatekeeper or some other system protection is in the way.
ruszki|4 months ago
And there are a lot of such things, which are trivial or non problem in Linux.
freeqaz|4 months ago
ivankra|4 months ago
I'm as much of a fan of Mac OS as the next Linux user here, but it's a very decent hypervisor and Stuff Just Works out of the box, for the most time. No more screwing around with half-baked qemu wrappers for me, vfio, virgl and what not. And running stuff without virtualization is a non-starter for me, I've been concerned about supply chain attacks before it became fashionable. Of course it would be even nicer if new Macs could run Linux natively, and I hope Asahi project will succeed with that, but until then I'm pretty happy running Linux desktop virtualized on it.
arm64 support is very decent across all the different OS now, I hardly miss Intel. I can even reasonably play most AAA games up to maybe mid-2010s on a Windows VM that's just a three finger swipe away from my main Linux desktop.
achandlerwhite|4 months ago
jayd16|4 months ago
Zizizizz|4 months ago
Things I prefer: Raycast + it's plugins compared to the linux app search tooling, battery life, performance. Brew vs the linux package managers I don't notice much of a difference.
Things that are basically the same: The dev experience (just a shell and my dotfiles has it essentially the same between OS's)
sofixa|4 months ago
The OS also has weird rough edges when used from the terminal - there are read-only parts, there are restrictions on loading libraries, multiple utilities come with very old versions or BSD versions with different flags than the GNU ones you might be used to coming from Linux, the package manager is pretty terrible. There are things (e.g. installing drivers to be able to connect to ESP32 devices) that require jumping through multiple ridiculous hoops. Some things are flat out impossible. Each new OS update brings new restrictions "for your safety" that are probably good for the average consumer, but annoying for people using the device for development/related.
jtbaker|4 months ago
pm2222|4 months ago
JadeNB|4 months ago
uaas|4 months ago
akulbe|4 months ago
I really liked Windows when WSL came out, but the direction Microsoft seems to be going makes me want to run the other way.
Windows or macOS... for the hardware working well, generally just works as expected. The tradeoffs you make with each, are different. But it's usually not a hardware thing, as to why (in my experience).
I just put Linux on a 5th-gen ThinkPad P1. It works... mostly. Sound works... at about 50% volume of what Windows or macOS would output. This has consistently been an issue with me, every time I've tried to use Linux on the desktop.
It ends up being some set of compromises to use Linux.
And when video is a frequent part of my work and personal use... the quality of it on Linux just doesn't cut it.
For server usage... forget it. Linux wins, hands down. Zero contest. :D
CjHuber|4 months ago
foxandmouse|4 months ago
The problem is their philosophy. Somewhere along the way, Apple decided users should be protected from themselves. My laptop now feels like a leased car with the hood welded shut. Forget hardware upgrades, I can’t even speed up animations without disabling SIP. You shouldn’t have to jailbreak your own computer just to make it feel responsive.
Their first-party apps have taken a nosedive too. They’ve stopped being products and started being pipelines, each one a beautifully designed toll booth for a subscription. What used to feel like craftsmanship now feels like conversion-rate optimization.
I’m not anti-Apple. I just miss when their devices felt like instruments, not appliances. When you bought a Mac because it let you create, not because it let Apple curate.
Panzer04|4 months ago
ericmcer|4 months ago
I just want shit to work, and most modern devs function many levels above the OS most of the time. Stuff I write is gonna run in a browser, a phone or a containerized cloud env. I don’t care about how configurable my OS is I just want to do my work and sign off.
baka367|4 months ago
Note that there certainly are quirks around arm64, however, coming from windows, i am no stranger to have to deal with such issues so they bother me less.
The best thing is, that i can confidently put mac into my backpack without worries of it performing a suicide due to not-fully-sleeping (common windowns issue)
LeoPanthera|4 months ago
This seems like a very unfair complaint. macOS is not Linux. Its shell environment is based on Darwin which is distantly related to BSD. It has no connection to Linux, except for its UNIX certification.
yoavm|4 months ago
As a Linux user, I sometimes dream about the Apple hardware, and I tell myself "How hard can it be to get used to MacOS?! It has a shell after all!". The OP reminded me that it can be quite difficult.
Philpax|4 months ago
wingworks|4 months ago
skopje|4 months ago
karmelapple|4 months ago
Depends what you mean by window manager, but an app like Magnet does not require disabling security settings.
https://apps.apple.com/us/app/magnet/id441258766?mt=12
unknown|4 months ago
[deleted]
woodruffw|4 months ago
(I have a handful of patches in DynamoRIO.)
bonsai_spool|4 months ago
https://github.com/lima-vm/lima
mike-cardwell|4 months ago
kgc|4 months ago
Also for dev, set up your desired environment in a native container and then just remote into it with your terminal of choice. (Personally recommend Ghostty with Zellij or Tmux)
AlexeyBrin|4 months ago
stonecharioteer|4 months ago
neop1x|4 months ago
aftergibson|4 months ago
I can write up all the details, but it's well covered on a recent linuxmatters.sh and Martin did a good job of explaining what I'm feeling: https://linuxmatters.sh/65/
lexarflash8g|4 months ago
surfingdino|4 months ago
sebiol|4 months ago
TranquilMarmot|4 months ago
I kind of did the opposite. I have a first-gen Framework and really enjoy it, but WOW that thing runs scorchingly hot and loud. Too hot to put on your lap even doing basic workflows. Battery life is also horrible, maybe ~4 hours if you're doing any sort of heavy work, ~6 hours if you're just browsing the web. Did I mention it's loud? The fans spin up and they sound like a jet engine. The speaker on it is also substandard if that matters to you - it's inside the chassis and has no volume or bass.
Last year I replaced it with an M4 Pro Macbook and the difference is night and day. The Macbook stays cool, quiet, and has 10+ hour battery life doing the same sort of work. The trade-off is not being able to use Linux (yes, I know about Asahi, the tradeoffs are not worth it) but I have yet to find anything that I can't do on linux.
I also _despise_ the macOS window manager. It's so bad.
skinnymuch|4 months ago
Linux is too ugly for me to use as my main device. Same with what I’ve seen of Android.
godelski|4 months ago
Unless you're talking about the look of the physical machine. Well then that's an easier fix ;)
https://www.reddit.com/r/unixporn/
yoavm|4 months ago
stevenwalton|4 months ago
Since I mostly live in the terminal (ghostty) or am using the web browser I usually don't have to deal with stupid Apple decisions. Though I've found it quite painful to try to do some even basic things when I want to use my Macbook like I'd use a linux machine. Especially since the functionality can change dramatically after an update... I just don't get why they (and other companies) try to hinder power users so much. I understand we're small in numbers, but usually things don't follow flat distributions.
There's often better ways around this. On my machine my OSX config isn't really about specifically OSX but what programs I might be running there[0]. Same goes for linux[1], which you'll see is pretty much just about CUDA and aliasing apt to nala if I'm on a Debian/Ubuntu machine (sometimes I don't get a choice).I think what ends up being more complicated is when a program has a different name under a distro or version[2]. Though that can be sorted out by a little scripting. This definitely isn't the most efficient way to do things but I write like this so that things are easier to organize, turn on/off, or for me to try new things.
What I find more of a pain in the ass is how commands like `find`[3] and `grep` differ. But usually there are ways you can find to get them to work identically across platforms.
But yeah, I don't have a solution to this... :([0] https://github.com/stevenwalton/.dotfiles/blob/master/rc_fil...
[1] https://github.com/stevenwalton/.dotfiles/blob/master/rc_fil...
[2] https://github.com/stevenwalton/.dotfiles/blob/master/rc_fil...
[3] https://github.com/stevenwalton/.dotfiles/tree/master/rc_fil...
thehamkercat|4 months ago
but i absolutely hate MacOS26, my next laptop won't be a macbook
It's a shame what they did to this awesome hardware with a crappy update
TacticalCoder|4 months ago
[deleted]