Steem.Cloud - Realtime Steem-Driven Word Cloud - v0.0.2 "Caprese" Release

in #steemit8 years ago

It's been four days since I released v0.0.1 into the wild. I got some valuable feedback from minnows and have given life to v0.0.2. This version was originally intended for optimization and refactoring, but based on the aforementioned feedback, I chose instead to improve interactivity and the GUI.

A reminder that Steem.Cloud is alpha!

Steem.Cloud v0.0.2 "Caprese" Alpha

Release Notes

  • New Color Scheme
  • Logo/Favicon
  • Better Blacklist (still improving)
  • Cloud updates on every block: deletes/edits. More on why additions to cloud are not included in this release below
  • Complete Cloud Refresh increased from 30 seconds, still playing with these settings. Refresh is dictated server-side with client-side as the slave, if inverse, it would present scaling issues and security problems at this point in development. By the end of Alpha, client-side will be in control of the refresh-rate, mitigating refresh-collisions.
  • More Optimized Text sanitization
  • Less blocks analyzed per cycle (to account for faster refresh rates)

Attempting to run the math that calculates scaled text sizes, and then runs "text adjustments" instead of "cloud generation" in realtime is not presently feasible with existing libraries, as they consume far too much memory, and do not provide methods that can assist with this operation. It would be required a library is written specifically for this purpose. While I may approach this challenge, it will have to wait until another day. Unless someone steps up to the plate, of course 😉

So to augment a realtime affect within the cloud, I settled with a workaround using transition animations for scale and opacity changes.

  • A "bounce out" and opacity increase implies a word is being used more frequently
  • A "bounce in" and opacity decrease implies a word is being use less frequently.
  • When a word is no longer "making the cut" for the cloud, it literally drops off the page.

As mentioned briefly above, and explained in detail below, I am presently not doing "cloud additions," or words that have been promoted to the cloud. To make up for this shortcoming, the Cloud is regenerated every so often to include these additions.

Known Issues

  • Memory leaks in the browser. This was a known trade-off for this release, and you won't notice it unless you leave the window open for ~15 minutes, or you're already consuming a lot of memory. The source of these issues are known, and will require a complete refactor of the client-side code to be addressed. It's the result of querying d3 from a deeply-nested scope at a high rate, ~10-100 times a second depending on the block. This is resulting in dropped executions and thus, inaccurate rendering. Some side effects of this are:
    • Degradation of the cloud generation algorithm, resulting in "loose clouds"
    • Eventually, your browser will start missing blocks (1-2 blocks) ... Sidenote: When the server misses a block (rare), it's detected and handled during a "slow period" or when there re blocks without content, which happens fairly often.
  • There is still a minor memory leak on the Server-Side, relating to how nodejs garbage collection manages constantly-changing objects. ~1mb/hr
  • Due to the aforementioned memory leaks, cloud additions have been postponed. Calculating cloud additions requires adding every deletion to a matrix, to record it's position and dimensions and bounds, and then attempting to find matches for additions. This process, due to an architectural design flaw on the client-side, depletes the DOM and everything starts to break, worsening the above issues. With a refactor, these problems will no longer arise.
  • The diff request will include data for words not on the canvas due to the ommission of additions for the time being.
  • The refresh progress bar at the bottom of the page is inaccurate, especially on your first page load.

Why not use canvas instead of SVG?

There's a number of reasons related to milestones. However, I have be deliberating on forfeiting some planned features in exchange for Canvas. At this moment in time, I would give the switch to Canvas a likelihood of around 70%, and the introduction of a canvas alternative at around 98.3278%.

Celebrate with Caprese

What to expect in v0.0.3 Release

  • Optimized and Refactored Client-Side Code, including bug-fixes inherent to these improvements.
  • Word Cloud Additions, final step for realtime.
  • More GUI/UX work
  • Ever-improved Blacklist
  • Ever-improved Text Sanitization (still seeing memory-related artifacts in v0.0.2)
  • Credits
  • About Section

See v0.0.1 Release Post for the Roadmap

Questions I still need assistance with

  • Best practices and api patterns for querying comments per user and topics. API does not appear to expose these methods by default unless I am missing something. I figure there's a known pattern for this. @xeroc? Anyone?

Upvote to support this project and follow me for updates 🙃

Sort:  

Nice!

Cloudy with a chance of meatballs.

Is this article a little too technical for you? Check out the layman's version

Looks great man! Making some really nice progress! You should consider adding a white mode and a blue mode for users to pick between (that is if you're looking for more ideas ;) )

So the issue is basic design theory on this one. It's far too stressful on the eyes to have that many white gaps. I'll add it to the list though!

Hi steemers! i ask you to pay attention to this article. After few minuts we run this article, what is a Steemit and Steem???

-http://steemit.com/steemit/@rggreen/steemit-a-brilliant-idea-or-a-bubble

Hi! This post has a Flesch-Kincaid grade level of 10.6 and reading ease of 54%. This puts the writing level on par with Michael Crichton and Mitt Romney.

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63960.62
ETH 3142.95
USDT 1.00
SBD 3.95