I'm sorry, I just really hate this Apple Fanboy rhetoric. It's frequent and infuriating. Don't get me wrong, I hate it when the linux people do it too, but they tend to tell you how to get shit done while being mean.
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]
Either:
1) Card > Look for Duplicates
2) Select the duplicate cards, then Card > Merge Selected Cards.
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 :)
It’s rare that I get feedback like this about a feature I owned for a decade.
1) The vast majority of users have only one contact-sync account, so it’s not an issue for them, merge works fine
2) For users that have multiple contact-sync accounts, they almost never want a feature to silently choose one account’s contact and delete the other account’s contact. So linking is really what these users want if the contacts live in different accounts.
It’s interesting feedback that a combined “link or merge” command would be what you’d expect. That’s a reasonable request; in my day we generally steered clear of combining destructive operations (merging) with non-destructive (linking).
I was more focused on the fact that the macOS implementation of “look for duplicates” is pretty broken; there’s a decent iOS implementation we never got around to migrating to macOS.
Don't get me wrong, I don't have an issue with linking. I think that's the correct solution.
In fact, it's kinda the only solution unless you can push info upstream, and you shouldn't assume you have those privileges or even know their data structure. But that doesn't matter because what the user cares about is how the information is displayed.
It is primarily a display issue. No deletions needed
The critical issue is I, the user, can't identify if these two contacts are in the same address book or not. The only way I can find this out is to guess and check. I have to guess the address book and then search that name, then repeat. That's not a reasonable solution nor does it scale. It's trivially solvable too. Just tell the user what address book a contact belongs to!
That's what leads to the confusion. All the program is telling me is that there are two contacts with the same name, nickname, phone number, and birthday. But the contacts differed on email and notes. The UI feedback tells me "Apple doesn't know how to do a trivial database query" not "Apple doesn't want to destructively merge these contacts because they are in different address books." That is actually not an obvious thing and I chased multiple other issues first. This is especially bad because in my calendar I had 3 entries for this person's birthday and 3 contacts. 2 were linked to my iCloud address book and 1 to Google (by ctrl clicking on the date, but maybe (in hindsight) that's not actually accurate). I somehow got it down to two, which resulted in 4 birthdays on my calendar! That actually created a false flag because now the icons showed as of 1 was from google and now 3 from iCloud, with all 3 no longer linking to a contact. The feedback the programs are giving me is "Apple can't merge tables", right? Or at least that's a reasonable interpretation.
I think theres a relatively simple solution to this. 1) indicate on the contact card which address book the contact belongs to. 2) "Find duplicates" queries across address books. Present the option "link contacts" instead of "merge". It's obviously reasonable that a user would want this as you have that capability for a reason. I honestly think "merge" could be "link" in most cases, because depending on the data structure those will be equivalent (you reference a node. That node has children pointing to the different tables). I agree, you shouldn't delete data, but there's also likely no reason to (yes delete if you have duplicate pointers pointing to the same object unless these pointers are aliases)
The same idea applies to calendar events. I missed a ton of events when I first switched to an iPhone because I'll look at my calendar and see 3 copies of "Columbus Day" and 1 "Indigenous People's Day" (Apple does both!) and not what I had scheduled for 10am. The only solution I have is to disable the holiday tables from my Google calendar and outlook. Effectively that's "deleting" data. This looks like a fine solution but those calendars aren't identical. As a user I want the union. I want deduplication. Because who wants redundant information? It's clearly not something the user is intending (at least in this case). That's going to be true for things like birthdays too (which I'd be happy to import). Apple doesn't even distinguish that as a separate table for my Google calendar so I'm stuck with dupes.
Effectively it is a display issue. As a user that's what's critical to me because that's what makes the program useful. As a programmer, yeah, I care about details but my tech illiterate parents don't.
> With Apple, it is "Do things the Apple way, or not at all".
Well kinda, you don't have to use all that much Apple software on macs though. If you can live with the window manager / desktop environment then you can use whichever apps you choose for pretty anything else.
I'm not sure this is true, especially if you're a "power user"[0]. Here's an example: I want to modify `~/.ssh/config` to define a machine's alias depending on the SSID I'm on. So I want this logic
If on MyHomeSSID:
Host FooComputer
Hostname 192.168.1.123
Else If tailscale-is-running
Host FooComputer
Hostname 100.64.0.123
The reason you might want to do this is so that you can have your ssh connection adapt to the network you're using. You can just always write `ssh FooComputer` and get the connection you want. This can get much more complicated[1], but is incredibly useful.
How would you accomplish this? Well actually, I don't know ANYMORE[2]. The linked thread had a solution that worked, but `ipconfig getsummary en0` now redacts the SSID (even when running sudo!). Though `system_profiler SPAirPortDataType` still works and I can get the result in 4 seconds... So not actually a solution. Yet it shows the idiocracy and inconsistency of Apple's tooling. There was a solution, then Apple changed it. wtallis helped me find a different solution, and well... then Apple changed it. YET `system_profiler` still doesn't redact the SSID so what is going on? Why is it even redacted in the first place? I can just throw my cursor up to the top right of the screen and see the SSID information. If it was a security issue then I should not be able to view that information in GUI OR CLI and it would be a big concern if I could see it in some unprivileged programs but not in others.
And that's the problem with Apple. If I write some script to do some job, I don't know if that script is going to work in 6mo because some person decided they didn't want that feature. So I can find some other command to do the exact same thing and end up playing a game of Wack-a-mole. *It is absolutely infuriating.* This is what I mean by "constantly punching you in the face". The machine fights you and that's not okay.
[0] I put in quotes because the example I'm about to give is to some "complex" but others "dead simple". I'd actually say the latter is true
[side note] I've used a similar SSID trick to write myself a "phone home" program in termux for Android and other machines. I can get my GPS coordinates and other information there so you can just write a <50 line program to ping a trusted machine if your device doesn't check in to trusted locations within certain timeframes. Sure, there's FindMy, but does that give me a history? I can't set an easing function to track if my device is on the move. Can I remote into the lost machine? Can I get it to take pictures or audio to help me locate it? Can I force on tailscale or some other means for me to get in without the other person also having technical knowledge? Why not just have a backup method in case one fails? I'm just trying to give this as an example of something that has clear utility and is normally simple to write.
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