Introducing Shrubgrazer

December 16th, 2022
mastodon
Since starting using Mastodon a month ago, a few different things haven't been a good fit for how I like to use social media:

  • I'm relatively free with following people, but there are some people whose posts I don't want to miss. I'd like these to go at the top of my feed.

  • Fediverse replies logically form a tree, but Mastodon just shows you a list. This isn't good for reading complex branching discussions. When I set up replies on my blog as comments I made them be a tree, and I like this a lot better.

I decided to write a custom client that does both of these the way I'd prefer, and also fixes some other problems I've had with social media historically:

  • On Facebook, it's reasonably common that you saw something but can't find it again. In my client there's a history page that shows you everything you've looked at in reverse chronological order.

  • Traditional algorithmic feeds have weights but you can't interact with them directly. Instead you just notice that it's showing you a lot of posts by someone you happened to have a few interactions with, while never showing you posts by many other people. The weights for this feed are directly exposed in the UI, and there is a page where you can make any changes you want.

  • Your behavior only changes weights when you make a conscious choice to change them. There are various things that I will interact with (TikTok style shorts, angry discussions) that, on reflection, aren't how I would like to spend my time. When interacting with an opaque algorithm there's no way to say "I know I just spent a while looking at that distracting flashy thing, but it isn't actually what I want you to show me more of".

If you were to visit you'd be asked to log in:

It won't actually let you log in because the list of allowed users is currently just me, but let's imagine you're me. On logging in you'd see a feed, which is a series of posts sorted first by the weight I've assigned to the author and then in reverse chronological order.

If you click on a post you get a forum-style threaded view:

It also works on desktop, where you have a bit more space:

If you open a post that has both children and parents it shows the parents above and then threads the children below. This means even when exploring a large discussion you can still see your context.

You can favorite posts by clicking the star. You can also reply to them inline by clicking the "up and then left" reply icon:

The hamburger menu in the upper left gives additional options:

The client has only just gotten to where it's usable, and there are still several key features where you need to fall back to the standard UI (notifications, following, boosting). Still, if it's something you'd like to play with, the client is open source (github) and is a python wsgi app with no dependencies. I could also temporarily add you as a guest on my instance if you wanted to try it without running code.

There are a lot of other things I'd like to do with this, like integrating notifications into the feed, threading related posts in the feed, and showing context on recent entries. You can see the full list on GitHub, and feel free to suggest more either in a comment or as a new issue.

Referenced in:

Comment via: facebook, lesswrong, mastodon

Recent posts on blogs I like:

Starting With Chords

A lot of people play fiddle. Basically nobody starts by learning chords before learning melodies. But that's actually how I learned. I started with chords. One of the nice things about learning to play violin this way is that you can go busking even…

via Anna Wise's Blog Posts November 15, 2024

Stuffies

I have some stuffies and I just have a bunny. Bunny is a rabbit. Woof is a seal. My favorite stuffie is bun bun. I play with my stuffies. Sometimes I jump up with them and I roll them. I can just throw them in the air when I want to play bthululubp wi…

via Nora Wise's Blog Posts November 15, 2024

You Can Buy A Malaria Net

2024 election takes

via Thing of Things November 6, 2024

more     (via openring)