designing a vote weighting system that favors similar instances
Would make the whole thing even worse, as I could create several new instances with 10 bot users each, then hammer out the votes.
The entire problem is that you can't trace back each vote to a genuine user. It would be bad in case of fake instances that create 100 user accounts and upvote/downvote stuff, but you can ban the instance. It would be a disaster if a big instance creates fake votes (like lemmy.world suddenly adds 1000 fake users and uses them to manipulate other instances, if votes were anonymous you couldn't check if it's genuine lemmy.world users or fake accounts).
That one is super easy. Your wife is near you and possibly friends on Facebook with you. The ad system knows that and that's why your wife sees the ad, as there is a high likelihood that you talked with her about this topic. Though the ad seems to have a shitty target audience definition, your wife should never see it if she's not into computers herself (waste of money marketing wise).
This is similar to a friend of yours having a new hobby, looked up a lot of stuff about it online, you hang out with them for two hours at a café and suddenly you get ads for this hobby (as it was very likely a topic in your conversation). No need to record your conversation, people are predictable.