> friends will automatically figure out which "Grace" and "George" you're referring to, even if you're friends with lots of different Graces and Georges.
How does this work? For example, if I have two equally good friends named "Grace", how can "friends" guess which one I'm talking about?
Currently, it looks at all of the past activities and in particular how often groups of friends appear together. For instance, if my activity is:
"Grabbed burgers and fries with Grace and George."
It will pick the "Grace" and "George" that appear most often together. In the case of a tie, or when there is only one name to match, it picks the ones who are closer friends (which for our purposes means they've been in more activities).
This works even for large groups, and it will brute-force every combination of all of the names with multiple friend matches to find the set with the highest score (based on pairs of friends, so a group of 10 friends will be matched correctly even if no activity has yet had exactly those 10 friends together). The brute force algorithm hasn't been slow enough to warrant any sort of constraint satisfaction optimization.
I've found this algorithm to work almost every time, because I find I usually refer to people (verbally and mentally) in groups ("Mark, Jane, and Stacy from work," "Jack and Jill's wedding," etc.), or use last names when I have more than one friend with a given first name and the one I'm referring to isn't the one I'm closest with (e.g. "Grace" would refer to my close friend Grace Hopper, while I might say "Grace Kelly" to refer to my acquaintance to clarify that it's not Grace Hopper).
I'm interested in ways to make this smarter still though, and/or better UX to allow the user to correct mistakes. Very interested in suggestions here if you have any!
Simular to your own thinking, the "suggest" feature is why I built this in the first place, but sadly it has gotten the least amount of love because I had to first build the foundation so it would have friends to suggest in the first place.
If you have any suggestions (heh) for how to improve/expand upon this feature, I'm all ears!
Mostly posting these stats because it was interesting for me to count them and see for myself. :)
It was :-)
Thank you for the number.
I'm not totally sure what you mean by "profiles," but you can see all of the activities you've done with a friend like this: `friends list activities --with 'Grace Hopper'` and you can see a graph of your relationship over time with: `friends graph 'Grace Hopper'`
I suspect by "profile" you really mean what the second question is getting at around storing more information. I haven't committed to anything in particular in that vein and I like how this program is currently very lightweight UX-wise. (I want it to encourage users/me to be social and maintain relationships offline.) That being said, I've been thinking a lot about lightweight ways to intelligently incorporate location data as well, so that (for example) if I'm visiting a city for a weekend I could query for friends in that city to do things with.
Do you have other ideas? I'm very very open to suggestions!
Are there annoyances with having an update command like this?
1) People who regularly use one or a couple of package managers who can update all packages with a few commands.
2) People who regularly use packages from a variety of many different package managers, for whom running `update` for each one would be more cumbersome than just running updates on the packages themselves.
I don't know which way I lean, but I don't see the harm in having a self-update in the package so long as you can also update via gem, but maybe I'm way off-base.