This post describes recent work on developing the Steem Conversation Accelerator (SCA) browser extension to help users stay engaged with relevant conversations happening on the Steem blockchain. The extension is intended to provide notifications when followed accounts make posts, comments, or receive replies, in order to increase the velocity and relevance of discussions on the platform.
Over the past two weeks, the focus has been on resolving technical challenges related to date/time handling, network issues, and display formatting for the extension's activity list. Looking ahead, the next month will involve more testing, debugging, and refining the existing functionality before open-sourcing the project. Future development will explore additional features like notifications for specific threads, tags, and communities; filtering options; and integrating Visibility As A Service.
The post also contains reflections on the utility of the SCA as well as possible strategies for organizing communities in support of Open Source development.
During the last fortnight, I continued working on the Steem Conversation Accelerator (SCA) browser extension. The goal for this browser extension is to let the operator know when relevant conversations are happening on the Steem blockchain. Over the years, I have seen many people remark on the fact that it's sometimes difficult to know when interesting comments are made. As a result, gaps in conversations sometimes last for many hours or days. I believe that these gaps reduce the amount and quality of the chain's organic activity.
Enter the SCA. The idea is to create an open source browser extension that will alert the browser operator when interesting conversations are happening, and let them join in through the front-end of their choice. Current options are: steemit.com, steemitdev.com, SteemPro, and UPVU. As with the Steem Follower Checker and the Steem Curation Extension browser extensions, I'm intending to open source this - hopefully by Labor Day (September 2).
For the first set of activity notifications, I have been working on notifications when the operator's followed accounts make posts or comments, or when they receive replies. This was all described in the previous programming diary post, Programming Diary #21: Entertainment and collaboration. The branch that I'm currently working on is labeled, formatHTML, and the following sections will describe progress during the last two weeks.
Here are the descriptions from my git commits after the previous post:
commit e93664a5738f868df37ab81345a76650cb6125d8
- Debugging intermittent network issues. - Delete not followed entries from the activity list when the actor's account is unfollowed by the observer's account, or when the observer account changes.
commit f16f23232fd70c9a0c6956cc80a028b1654df897
- Fixed indentation problems. - Updated to change background color when the data load completes.
commit 47e715168af07f5e54dfb1f33813b8af08ed1ff2
- Time selections and filtering are getting close, but need further testing and refinement. - Much HTML formmating is still needed. - Should be no more issue with API race conditions as the condenser_api.get_account_history call is used for all times.
commit 27e17cdddb5a0a0065903a41d73af099c7d6e105
Still working on date adjustments
commit 3b6b661821a5bb0c2107ea9a516d7501a7cdc28f
Migrating from last_post in list_accounts to timestamp in get_account_history. Still need to add the timestamps to the account list.
In summary, although the intent was to focus on HTML formatting, that has actually been a small portion of the effort. Activities have landed in 3 areas:
So, let's look at each of them.
As previously described, the main issue that I wanted to address with dates and times was a mismatch between the last_post
value in the condenser_api.lookup_accounts output and the displayed timestamps in the condenser_api.get_account_history. It appears that the last_post
gets updated in near real-time, but the timestamps in get_account_history
lag behind. This meant that I was losing activity if I clicked on it after it was discovered with last_post
, but before it had appeared in get_account_history
.
To address this problem, I decided to ignore the last_post
value and track a "last displayed time" for each followed account, then to notify and report on new transactions when they show up in get_account_history
.
Easier said then done - Unfortunately, this meant that I had to add iteration to the search for the last posting activity, which made the notification logic more complex, and I had to pass the data back and forth between the background
script and the HTML page where the listing is displayed. It also meant that I had to debug a bunch of issues with timezone handling where JavaScript was either reporting GMT time as local time or was applying an offset adjustment to convert GMT time to display in some future time that hadn't even happened yet.
One remaining issue with this strategy is that the rate limit on the Steemit API servers makes the browser extension unusably slow, so I have only found a couple of API servers where it can currently be used productively.
Two steps forward and one step back - After I had the time/date handling up to it's current state (possibly working, but not well-tested), I started working on some other tasks like cleaning up code that was obsolete or inserted for debugging purposes, and when I did, network functions that were previously working started failing again.
I'm not sure if I sorted out all of the problems, but it's been stable all day today - so... 🤞🤞🤞 fingers crossed. It seems that the problems had to do with the error handling. In certain situations, it seems that my code was "hallucinating" network errors, and bailing out when it did.
Troubleshooting this sort of problem is complicated by the fact that I need to wait for a polling interval to expire and for some relevant activity to happen on the blockchain before I can see whether a change actually fixes the problem.
The browser notification has now been changed so that new notifications replace old ones, so there is never more than one notification message in the task bar. I also rephrased the text slightly. Here's what the current notification looks like. If there is more activity during the next polling interval, that notification will be replaced by a new one.
Conveniently, that just happened, so here's the replacement notification:
Here's what the HTML activity list looks like now:
This incorporates the following changes
Somehow, I also have to find time to look at Q3 adjustments to the Follower Network Strength calculation for my automated voter and for the Steem Follower Checker.
The original goal for this browser extension was to increase the velocity and relevance of conversations that happen on the Steem blockchain, but I have noticed that it may also have some welcome side-effects.
Idle and Misdirected Resources - We have this blockchain that can be used as a communication and collaboration tool, but we're not using it to effectively power Open Source development. Why? How can we do better?
The SCA represents my third foray into the world of javascript and browser extensions. This is the first time that I've made use of a CSS style sheet in addition to the HTML and javascript language. With the help of AI assistants like Claude and ChatGPT, I'm starting to learn some of the basics.
The guiding principles here are unchanged from last year. I'm looking to improve the Steem ecosystem and also support true decentralization through the use of Open Source code, decentralized and redundant API nodes, and execution on the operator's end-device without relying on other intermediaries (like a web server).
Recent development focused on resolving technical challenges related to date/time handling, network issues, and activity list formatting. The next steps are expected to include additional testing, debugging, and refining the SCA with its current feature set before open-sourcing it.
While the goal of the SCA is to increase Steem engagement, it also offers potential benefits like pulling attention from other sites to the blockchain and improving content discovery. The post also touched on strategies for fostering Open Source development on Steem, including attracting developers and leveraging community-based models.
Visit the /promoted page and #burnsteem25 to support the inflation-fighters who are helping to enable decentralized regulation of Steem token supply growth.