Introducing "Steem Follower Checker": A new Open Source browser plugin

in Steem Dev7 months ago (edited)

With (a lot of) help from ChatGPT, last night and today I slapped together a simple browser plugin to make it easy to calculate the "Follower Network Strength" metric that I've been playing with. I also published it as my first ever Open Source distribution, so feel free to try it out and make suggestions. I've only tested it in Brave, so if you use a different browser YMMV.

It's in the Steem Follower Checker github repo.

The scoring has been updated from last week's post, and the heat map visualization now looks like this:

Summarizing:

  1. If the account has less then 20 followers, the score is 0.01
  2. If the median follower reputation is less than 30, the score is 0.01
  3. Otherwise it follows something like the following logic.
    3.1. Normalize followers by mapping the range from 0 to 1200 -> to the range from 0 to 1. Anything above 1200 also counts as 1. (call this X)
    3.2 Choose an upper boundary for the median reputation threshold based on the follower count. This declines linearly from 92 at 0 followers to 35 at 1200, then it levels off. (Call it U.)
    3.2. Normalize the median follower reputation by mapping from the range from 30 to U into the range from 0 to 1. Anything above U counts as 1. (call this Y)
    3.3. Define the origin as 0 followers with 30 reputation. (0 should probably get changed to 20 for consistency(?)...)
    3.4. Set the follower strength to the distance from the origin, which is square_root (X2 + Y2)

This scoring has the following properties

  1. The maximum value is 1.414 (square root of 2)
  2. It's impossible to get above a score of 1 without contributions from both follower count and median follower reputations.
  3. Accounts with less than 20 followers or with a median follower score less than 30 get minimum scores.
  4. There is a pivot point around 200 followers. With less than 200 followers, the follower strength is smaller than the median follower reputation, with 200 followers, it's about the same, and with more followers, the follower strength is larger than the median reputation.
  5. I fully expect that this metric will need to be modified and improved as time goes on, due to deficiencies in the current method and also due to changes in future blockchain usage patterns.

Example

Here's what the new plugin looks like (the icon was made with the use of Microsoft Copilot):

I was mainly interested in the process of creating the web form for the browser extension, so I haven't actually validated the math carefully. I might look at that in more depth during the coming days/weeks. Therefore, it's possible that there are miscalculations, but the scores that I've seen during testing seem reasonable. Let me know if you see any mistakes.

Installation instructions

Installation instructions can be found in the README file, and I'll paste them here, too. These were written by ChatGPT with some light editing as I stepped through the process a couple times.

Unfortunately, I don't know anything about getting software into the official store, so you'll have to enable "Developer Mode" if you want to install this.


Steem-Follower-Checker

A browser extension to get total number of followers, median reputation, and follower network strength for a Steem account.

Steem Follower Checker Browser Extension

Installation Instructions

Installing from GitHub Repository:

  1. Navigate to the GitHub repository of the Steem Follower Checker Browser Extension.
  2. Click on the green "Code" button and select "Download ZIP" to download the extension package (Steem-Follower-Checker-master.zip).
  3. Extract the contents of the downloaded ZIP file to a folder on your computer.
  4. Open your browser (Brave or Chrome).
  5. Navigate to the browser's extension management page:
    • Brave: Click on the three-dot menu icon in the top-right corner, select "More tools" > "Extensions". (or go to brave://extensions in the URL bar)
    • Chrome: Click on the three-dot menu icon in the top-right corner, select "More tools" > "Extensions".
  6. Ensure that Developer Mode is enabled:
    • Toggle the switch labeled "Developer mode" in the top-right corner.
  7. Drag and drop the extracted extension folder onto the extension management page.
    • Alternatively, click on the "Load unpacked" button and select the extracted extension folder.
  8. The Steem Follower Checker extension should now be installed and visible in the extension list.
  9. Ensure the extension is enabled by toggling the switch next to its name in the extension list.
  10. Press the "Details" button for the newly installed extension, and click on the "Pin to toolbar" toggle.
  11. Once the extension is installed and enabled, it is recommended to disable Developer Mode for security reasons:
    • Toggle the switch labeled "Developer mode" again to turn it off.
  12. The extension is now installed and ready to use. You can access its features by clicking on its icon in the browser toolbar.

Conclusion

I don't know how much I'll be revising this - if at all, but it seemed like a fun activity. The code is open source - and fairly simple, so you can feel free to look it over before installing. Please let me know if you have any suggestions, especially for the scoring system itself.

Even though it's simple, I make no guarantees for this code, so use it at your own risk. You are free, however, to use and adapt it however you'd like (within the bounds of any relevant laws 😉).

Thank you to @moecki for feedback on last week's post. Hopefully, this version of the metric is somewhat improved over the previous version.


Thank you for your time and attention.

As a general rule, I up-vote comments that demonstrate "proof of reading".




Steve Palmer is an IT professional with three decades of professional experience in data communications and information systems. He holds a bachelor's degree in mathematics, a master's degree in computer science, and a master's degree in information systems and technology management. He has been awarded 3 US patents.


image.png

Pixabay license, source

Reminder


Visit the /promoted page and #burnsteem25 to support the inflation-fighters who are helping to enable decentralized regulation of Steem token supply growth.

Sort:  
 7 months ago 

Very interesting.
The new constraints and limits seem to be very sensible. I did see your changes (and the new heatmap) after my comment last week, but unfortunately didn't have time to look at it in more detail.
I see you've made good progress though. I'm curious and will definitely try it out...

 7 months ago 

Now that it's easier to check peoples' scores in the browser, I'm seeing that it's probably far too easy to get a top score. I'm thinking I'll start planning for a June 30 methodology change, then tentatively once a quarter after that. I think the first order of business for June is to make it harder to max the score out.

 7 months ago 

Yes, a few adaptations will certainly still be necessary. Fine adjustment is usually not that easy and takes time. I haven't looked closely yet, but I couldn't say right off the bat how you could easily get to the top.

Integration in the Browser Extension would be helpful to be able to track the results better. However, the additional requests prevent me from doing this. Basically, it would be better if the follower median was already calculated at hivemind level. That shouldn't be so much effort there. Maybe I can integrate this as a test (if the time allows it).

 7 months ago 

Integration in the Browser Extension would be helpful to be able to track the results better. However, the additional requests prevent me from doing this.

This was exactly my thinking. I wanted to add word counts, too, but after thinking it through I thought it would be too much network traffic. Now I'm thinking of maybe showing both values one post/author at a time via mouseover and/or after clicking into a post.

Basically, it would be better if the follower median was already calculated at hivemind level. That shouldn't be so much effort there. Maybe I can integrate this as a test (if the time allows it).

That would definitely be a useful addition. I have no idea about the work effort, though. If it's not already there, the follower count would be useful, too. A lot of the API servers aren't running the follower plugin.

 7 months ago 

Now I'm thinking of maybe showing both values one post/author at a time via mouseover and/or after clicking into a post.

Mouseover would be conceivable, but I'm not sure if the data could be loaded (and processed) that quickly.
I can well imagine the information for the post display. The word count and the number of followers could be extracted from the data already available in the Redux Store. We wouldn't need an additional query for this. However, I don't know whether the extension can access the Redux Store. I could imagine that this is not so easily possible.

A lot of the API servers aren't running the follower plugin

The plugin is not necessary for this. This data is also stored in the hivemind database. A (not so simple) SQL query is sufficient for this (The copilot helped with the median function):

SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY accounts.reputation) AS median_reputation
FROM hive_follows AS follows
JOIN hive_accounts AS accounts ON follows.follower = accounts.id
WHERE follows.following = :aid AND follows.state IN (1,3);

The calculated values were exactly the same as those I had determined with my last test code.

 7 months ago 

The word count and the number of followers could be extracted from the data already available in the Redux Store. We wouldn't need an additional query for this. However, I don't know whether the extension can access the Redux Store. I could imagine that this is not so easily possible.

There's a Google Chrome Redux Plugin which can be used for debugging - so presumably, it's possible for a different Plugin to access the Redux state within a website.

 7 months ago 

Do you mean the Redux DevTools? As far as I know, the DevTools should be deactivated in the production environment.

Or is there another plugin?

 7 months ago 

Ah, yes. I do mean the Redux dev tools. I’ve only used them in test so it sounds like you can dismiss that idea.

 7 months ago 

The plugin is not necessary for this. This data is also stored in the hivemind database. A (not so simple) SQL query is sufficient for this (The copilot helped with the median function):

So, the way that works is that the SQL query gets added to the bridge API in hivemind, and then the browser extension would make a bridge API call to a steem node? Would a soft fork be needed? This is still sort of a black box to me.

(and from above)

a few adaptations will certainly still be necessary

I think I have a potentially interesting and impactful idea for the June 30 update. I'll try to post about it this weekend so I can get community feedback before implementing.

 7 months ago 

added to the bridge API in hivemind, and then the browser extension would make a bridge API call to a steem node?

Right. Like the new get_bookmarked_posts here

Would a soft fork be needed?

No, only an update of hivemind nodes. We don't even have to wait for Steemit to integrate this into their nodes, as we can also use the extension to query our own nodes (e.g. the one on which my database version 21 with the bookmarks is already running).

 7 months ago 

It hadn't crossed my mind before, but this morning I wanted to see if I could merge the content extension and the popup extension into one, and if so, how hard it would be. It turned out to be fairly easy, and took less than an hour. So now I need to decide whether there should be one extension or two... I guess ideally, there would be a single extension with:

  • a configuration capability for the user to activate either or both modules; and
  • a shared library so that both modules could share functions like the follower network scoring.

That's all over my head right now, though.

 7 months ago 

I've already read your post on this, but won't be able to reply to you today.

This post has been featured in the latest edition of Steem News...

Very interesting what you are doing, I will try it, we will see the results, I am optimistic, so I hope to see a good result.
I wish you a happy day

 7 months ago 

Please let me know if you encounter any problems.

This is really a massive update that I am so sure that it will definitely benefit a whole lot of steem users as I am so sure of that. Thank you for bringing up this update

Upvoted. Thank You for sending some of your rewards to @null. It will make Steem stronger.

You are really doing a very great job and quite interesting to see the updates it offers

You are really doing a very great job and quite interesting to see the updates it offers