When to ❤ something?

Three people, three practices!

I use :heart:s very sparingly on persistent platforms like Discourse. Without looking at my profile, I can tell you with high confidence that I have :heart:ed exactly three posts. I can tell you which posts they were (and in what order), and why I chose to :heart: each one: the reasons are all different.

Off the top of my head, I didn’t know what my stats for GitHub were. But I wrote a simple query to find out*, and it looks like I’ve :heart:ed five posts, which seems proportionally commensurate.

On Discord, my reactions flow more freely, precisely because they are more ephemeral.

I think that it’s important to recognize that there is such a diversity of practice here. This thread hasn’t come close to covering everyone’s usage patterns, and already we see a bunch of variance. It will be tricky to try to find a “one size fits all” semantics for the interpretation of :heart: reactions, yet I suspect that it’s important that we meet people where they are. If we design our own platform for SourceCred, we can tweak the UX endlessly, but as long as the button is labeled “:heart:”, people are going to come in with preconceptions, and they will use the button how they please.

So—

—don’t apologize! Your opinion is valid.

* The way to my :heart:

The expressiveness of the GraphQL-to-SQL mirror really shines here—you can’t express this in a GraphQL query because it needs to traverse edges backward, but it’s trivial in SQL:

-- What GitHub posts has @wchargin :heart:ed?
SELECT reactable_url.value AS url
FROM objects AS reactions
JOIN primitives AS reaction_primitives
    ON reactions.id = reaction_primitives.object_id
    AND reactions.typename = 'Reaction'
    AND reaction_primitives.fieldname = 'content'
    AND reaction_primitives.value = '"HEART"'
JOIN links AS reaction_user
    ON reactions.id = reaction_user.parent_id
    AND reaction_user.fieldname = 'user'
JOIN primitives AS user_primitives
    ON reaction_user.child_id = user_primitives.object_id
    AND user_primitives.fieldname = 'login'
    AND user_primitives.value = '"wchargin"'
JOIN connection_entries AS reaction_parent_entry
    ON reaction_parent_entry.child_id = reactions.id
JOIN connections AS reactable_cxn
    ON reactable_cxn.rowid = reaction_parent_entry.connection_id
JOIN primitives AS reactable_url
    ON reactable_cxn.object_id = reactable_url.object_id
    AND reactable_url.fieldname = 'url'
;

I think that at last I may have gotten the SQL schema right. I also think that I may have gotten the indices right: the query plan here users only indexed searches except for the reaction_parent_id lookup, which is reasonable because reverse-edge searches aren’t something that we actually care about in production SourceCred.

5 Likes