Programming Diary #19: Follower network strength and preparing for Open Source publication

in Steem Dev25 days ago (edited)

Summary

Once again, I didn't have much progress to report at the two-week mark, so I skipped that update and it has been about a month since Programming Diary #18: WhaleAlert inspired activity notices. For this interval, my activities mostly shifted from the Steemometer programming to alignment of voting weights with the strength of an author's follower network. I also made some progress towards getting the Steemometer ready to publish as open source.

Background

Here are the two goals that I set for myself in Programming Diary #18: WhaleAlert inspired activity notices.

  1. Implement algorithm changes in automated voting so that voting percentages start incorporating information about an author's follower network;
  2. Start preparing the existing Steemometer code for Open Source release by adding comments, removing clutter, and trying to make sure that it doesn't leak details about my development environment.

I expect to revisit the first goal many times in order to continually improve the voting alignment between blockchain content and the human attention that the content receives. I also expect the second goal to take more than 2 weeks of effort.

I made progress on both goals during the last couple of weeks, but as expected, I have work remaining before I can call either one complete.

Progress

Aligning voting weight with follower network strength

For the first goal, aligning voting weight in my autovoter with the strength of an author's follower network, here's a visualization of the rules that I implemented. (each line is based on the number of followers that an author has)

Here are some characteristics of the "Follower Score" as implemented:

  1. If an author's follower network has a median follower reputation of 25 or less, it doesn't matter how many followers they have. The follower score is 0.01 (to avoid multiplying by 0).
  2. If an author has more than about 375 followers, and the median reputation is above 25, then the median reputation doesn't matter. They get the maximum follower score, which is 1.
  3. In between 1 follower and 375 followers, the follower strength increases from 0.01 to 1 with the number of followers and with the median follower reputation.
  4. To get the follower score above 0.5, the author must have somewhere between 64 and 128 followers.

I don't really like the shape of these curves, but it's a first pass. I ran into trouble with API responsiveness for a few days, so I'm still observing the impact of the changes.

As previously mentioned, once I find a curve that I'm happy with, I'll use that to inform the vote suggestions in the Steemometer tool.

Preparing Steemometer for Open Source publication

In order to do this, I am leaning about javadoc, and how it is implemented in Netbeans. I also learned about the SLOC maven plugin, so that I can contextualize my progress through the various Java class files. At present, it seems that my project currently contains about 2,790 lines of code.

Package NameFile NameTypeBlankJavaDocCommentCodeTotal
module-info.javasrc002911
steemometerApiServer.javasrc72915289
steemometerAuthorInfo.javasrc446122133260
steemometerCountOps.javasrc344134227336
steemometerMedianCalculator.javasrc20391108168
steemometerPostDisplayManager.javasrc1543391152
steemometerPostInfo.javasrc421228227399
steemometerStartPoll.javasrc61002137
steemometerSteemData.javasrc4511211192360
steemometerSteemPriceFetcher.javasrc2191265107
steemometerSteemometer.javasrc1901212110781401
steemometerSteemometerConfig.javasrc1441050105
steemometerSteemometerController.javasrc51012339
steemometerSystemInfo.javasrc4120925
steemometerTransactionNotifier.javasrc306014217321
steemometerUrlValidator.javasrc1644168129
steemometerVoteSuggestor.javasrc51701537
steemometerXferMemoInfo.javasrc23931126243
steemometerXferMemoManager.javasrc1542379139
2 package(s)19 file(s)java53679723527904358

I learned how to use Netbeans to insert javadoc comments in all files, and I have reviewed the auto-inserted comments in the ApiServer.java file and the AuthorInfo.java file. I also went through all files and removed auto-generated comments that I thought were unnecessary.

Next up

Since my goals from the last cycle are still in progress, I plan to continue them for the next two weeks.

  1. Experimentation and improvement towards aligning voting weights with follower network strength.
  2. Getting Steemometer ready for Open Source publication.

As with last time, I don't really expect to finish either goal in the next two weeks.

Reflections

I want to follow-up on three topics from the Reflections section in Programming Diary #18: WhaleAlert inspired activity notices, and also add a new topic:

SBD print threshold / Steem inflation

The Steem price has now remained above the SBD print threshold for a little more than a month, so I have continued to keep an eye on Steem inflation. The first quarter was deflationary, but the first week of the second quarter reversed that trend. It will be interesting to see what happens in coming weeks since the BTC halving is expected on April 20.

Blockchain activity

In the last post, I wondered if SBD printing would lead to an increase in blockchain activity. It appears that the answer is "yes". In that post, the blockchain activity was reported at about 185 operations per minute. Now it's up to about 207.

Steemit.com stability/API performance

The overall stability problems that were mentioned in Programming Diary #18, have been solved. API reliability still has occasional problems, however. As noted above, my autovoter fell behind by about two days for some reason. I didn't notice it for a while, so I have no idea what the cause might have been. Also, simple python activities are often still blocked by the rate limits that were implemented last fall.

Witnesses

Here's the new topic for today's post. I have some thoughts about witnesses in the Steem environment:

  1. The top-20 witnesses have more to do than just validate blocks. The task of setting the price feed seems to be in good order, but they also need to consider the SBD interest parameter. I've discussed this topic here, here, and here. It would be nice if the witnesses would weigh in with their perspectives. Is there some reason why 0 is the optimal percentage?
  2. I could be wrong, but I think there's at least one top-20 witness who has disengaged considerably from the ecosystem. It might be good for people to reevaluate their votes.
  3. Since I don't control enough stake to influence the ranks of the top-20, I often focus my witness voting further down in the ranks. There are a number of disabled witnesses who are still in front of real witnesses, so - again - it might be good for people to reevaluate their votes. For those of us who have smaller stakes, moving votes that aren't needed from the top-20 section to higher ranked witnesses might have a substantial impact towards downranking the disabled witnesses.
  4. I've mentioned it before, but IMO, @moecki should be ranked much higher than #58. It seems to me that he provides more to the ecosystem than several of the witnesses in top-20 positions, and many of the others, too. I hope readers will consider allocating a vote towards his witness.

Conclusion

If slow and steady wins the race, then I'm on track for a big programming win. 😉 It seems like publishing the toy Steemometer program as Open Source is in sight now, even if it's still not imminent.

My purpose for breaking out of iterating new features for it was to force myself to develop some other skills that will be useful for eventually implementing a peer to peer social media client. Based on the experiences learning about javadoc and SLOC, that seems to be proceeding as hoped.

I hope to see you in two weeks with Programming Diary #20!


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:  
 23 days ago 

I wonder if I have any painful suggestions to make?

Thinking about the Follower count to assist voting percentages, I wonder how hard (or necessary) it would be to check "Follower Activeness" - not necessarily their "Last Update" but perhaps checking that their STEEM Power is above a minimum threshold for acceptance. For example, older users might have a "higher reputation" bias from inactive users. As I type this, I'm asking myself "so what?" and perhaps the answer is that you're checking if the user's attracting new followers and therefore still posting good quality content. Although high power users naturally attract new followers irrespective of how good their content is.

Can you tell I'm thinking out loud.

I've mentioned it before, but IMO, @moecki should be ranked much higher than #58. It seems to me that he provides more to the ecosystem than several of the witnesses in top-20 positions, and many of the others, too. I hope readers will consider allocating a vote towards his witness.

!00% agree. Not only his activity, but his willingness to put himself in the community for all to see. I know some witnesses working behind the scenes that haven't talked about what they're doing (not that I've seen anyway).

I wonder how hard (or necessary) it would be to check "Follower Activeness"

I've thought about that, too (great minds think alike? 😉). Also median SP of followers. I think both values might be useful, but the only ways I know to implement them would be to query each follower account separately at the time of voting, or to store it in my own database and update it regularly. Both implementations require more compute than I want to put into it right now.

TEAM 1

Congratulations! This comment has been upvoted through steemcurator04. We support quality posts , good comments anywhere and any tags.
Curated by : @o1eh



 22 days ago 

Thanks @o1eh 🙂

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

TEAM BURN

Your post has been successfully curated by @kouba01 at 40%.

Thanks for setting your post to 25% for @null.
We invite you to continue publishing quality content. In this way you could have the option of being selected in the weekly Top of our curation team.

Team Burn (1).png

Burning STEEM by sending it to the @null account helps reduce the supply of STEEM and so increase its price.

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

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.032
BTC 57329.79
ETH 2914.99
USDT 1.00
SBD 3.67