loading...

How does dev.to choose which post should be on the top?

mayankjoshi profile image mayank joshi Updated on ・1 min read

Little curious (8 Part Series)

1) How does dev.to choose which post should be on the top? 2) Is PHP Dying? 3 ... 6 3) Have you ever used COBOL? 4) What is a project, you are really proud of? 5) If you were a recruiter, what would be your recruiting criteria? 6) What are the weird things people ask you, when they comes to know you are a developer? 7) What is your favourite operating system? 8) What rest API authentication method do you prefer?

How do Dev choose which post should be visible to it's user, except the preference based on following?

Also does Dev use machine learning?

Discussion

markdown guide
 

Currently we are split testing a bunch of different scenarios...

  def ab_test_user_signed_in_feed(feed)
    test_variant = field_test(:user_home_feed, participant: current_user)
    Honeycomb.add_field("field_test_user_home_feed", test_variant) # Monitoring different variants
    case test_variant
    when "base"
      feed.default_home_feed(user_signed_in: true)
    when "more_random_experiment"
      feed.default_home_feed_with_more_randomness_experiment
    when "mix_base_more_random_experiment"
      feed.mix_default_and_more_random_experiment
    when "more_tag_weight_experiment"
      feed.more_tag_weight_experiment
    when "more_tag_weight_more_random_experiment"
      feed.more_tag_weight_more_random_experiment
    when "more_comments_experiment"
      feed.more_comments_experiment
    when "more_experience_level_weight_experiment"
      feed.more_experience_level_weight_experiment
    when "more_tag_weight_randomized_at_end_experiment"
      feed.more_tag_weight_randomized_at_end_experiment
    when "more_experience_level_weight_randomized_at_end_experiment"
      feed.more_experience_level_weight_randomized_at_end_experiment
    when "more_comments_randomized_at_end_experiment"
      feed.more_comments_randomized_at_end_experiment
    when "mix_of_everything_experiment" # mix of all experiments. New experiments also added. This is the "index fund" version.
      feed.mix_of_everything_experiment
    else
      feed.default_home_feed(user_signed_in: true)
    end
  end

Each of these maps to a different type of algorithm...

github.com/thepracticaldev/dev.to/...

We don't actively use ML but it could get introduced into a future algorithm.

If anyone wants to introduce it via a PR, they are free to do so. Of course, getting the right ML in place is a fairly system-wide commitment which is why we haven't gotten there yet.

But if anyone is curious, I'd check out these gems as utilities they could lean on.

ankane.org/new-ml-gems

 

I'll take an opportunity to thank for endless productivity and self help posts, self taught stories and "should I attend a bootcamp" thoughts in my feed, endless tutorials on how to use array.map and let vs const vs var articles and etc. Thank you again. But I don't need them. At least not in like 40%+ of the feed. I know, there maybe not so much content to fill that feed, but mb i'll see them when I scroll to bottom? I mean, it may look salty from me, but I am REALLY scrolling more than actually read, and here ARE a lot of posts interrsting for me, but i have to scroll for them a lot avoiding those described above.

 

Results may not yet be entirely visible, but we're putting in a lot of work to address this specific concern.

One thing that helps if you haven't yet done it: Adjust your "experience level" in /settings/ux as one indication to help get a more relevant feed. Plenty more work to go in this regard from our team.

 

Apparently - these posts are still useful to many people. Or maybe it's just what the authors think :)