buidl-labs / foamviz Goto Github PK
View Code? Open in Web Editor NEWCentral repository containing data visualizations over FOAM's TCR Data
Home Page: http://foamviz.surge.sh/
Central repository containing data visualizations over FOAM's TCR Data
Home Page: http://foamviz.surge.sh/
Changing UI of the control panel according to Figma designs
Add a legend
HIGH PRIORITY
MEDIUM PRIORITY
Disable reset button (at initial state)
Add a control to rotate earth
Adding formatting to currency and FOAM tokens (eg 1000 => 1,000)
LOW PRIORITY
How to reproduce the issue? Disable cache in chrome.
The issue is recorded here:
https://www.loom.com/share/7874b7e0f05f4b8682c70de1dc76ad94
The bottom things load before than the "The FOAMViz project"
Take inspiration from: https://www.dharma.io/
See how things gracefully load. "Let the interface come to you"
Users can't answer what is this project. Questions that come to mind:
Missing elements from above questions:
For eg:
See how Compound explains itself on https://compound.finance/
Using https://codesandbox.io/s/react-text-loop-playground-br4q1 we can add:
Heading:
"Visualize statistics around POI's"
"Visualize journey of cartographers"
"Visualize the evolution of FOAM on planetary scale"
Subheading
FOAMViz is an umbrella project over FOAM TCR's data that encompasses interactive tools to analyze ecosystem activity on FOAM's map.
Then gracefully land users to all the three visualizations.
Allow the titles of the homepage sections to contain a hyperlink.
Increase the text spacing
Add option in control panel to switch views between Density of Points & Staked Tokens
Make changes to render the hexagon layer according to staked points value
What is the bug?
The issue is that viewport changes are sometimes not updated and got stuck for the user. And, 2D - 3D change button doesn't work.
How to reproduce?
Simply open the viz for a cartographer, do some interactions (viewport changes) & go back to the home route and come again (to any cartographer's journey).
What's the technical issue?
The viewport isn't reset to its initial state when navigated through react-router.
How to solve it?
Learning about how react-router interacts with the web app and solve accordingly.
When user is panning on POIAnalytics, debounce dragEnd.
Two approaches are to fetch data points residing inside 2x of the user's viewport OR fetching the entire world's data all at once. Need to test performance and rendering time in both these cases.
When density of points in a particular area achieves critical mass -> tweet that with a view of that area on foamviz and a link back to foamviz.
The view can be:
Days:
Monday - today
Tuesday
Wednesday
Timeline broken into 2 parts:
Days remaining for step 1:
Monday
Tuesday
HIGH PRIORITY
HIGH PRIORITY
MEDIUM PRIORITY
MEDIUM PRIORITY
Monday - High Priority.
Tuesday - Medium Priority.
Wednesday - Testing
Feedback Recorded Here: https://www.loom.com/share/7997372a33174f259674a7c261d40e22
These are from: https://web.dev/measure/
My reaction to above is summarized in this video: https://www.youtube.com/watch?v=umDr0mPuyQc
Prioritizing to solve specific issues over common issues
Common Issues Todo List
Medium Priority:
HomePage issue in #10
Adding FOAM navbar
Mobile Optimization - making it responsive
Good to have features:
Viz Specific Issues:
Medium Priority:
Add FOAM's navbar
Improve UI for "Waiting for user location message"
Remove loader at every drag
Keyboard arrow keys not working in location search box
Currently, the headings are in cryptic format i.e "VizCartographerJourney"
Please give feedback on the following visualizations:
Sample of cartographer journey: https://foamviz.surge.sh/#/cartographer-journey/0xe2d128323cf7560a6e7a82726d7b425aedc7a556
The time slider on Cartographer Journey is a little buggy. Fixes are en-route.
inset feedback for https://foamviz.surge.sh/#/poi-analytics
inset feedback for https://foamviz.surge.sh/#/cartographer-journey
Should we also reverse the order? First total FOAM tokens staked -> then their value in USD?
Make them more informative + order changes.
First I would like to know number of points in a particular bar (eg: x points staked)
Then I would like to know amount staked in this particular bar. (eg: x*y
where y = sum of each point's staked amount))
Then I would like to know USD value of total points staked in this particular bar. (eg: x*y*z
where z = FOAM's exchange rate in USD)
Currently, the visualizations lack:
Attributes to think about:
Also, can the visualizations become a better way of interacting with FOAM? As Caleb just integrated web3 tools inside FOAM.tools to make the experience more efficient, I see integration as tool which can serve a path. Question is what kind of path would be delta 4 so that people find our tools to be a better tool for using the FOAM Map. Some ideas:
On that note, FOAM could pave the path for:
Ready player one is a good movie to watch to take inspiration from.
Add lighting in hexagon layers as given in https://deck.gl/#/examples/core-layers/hexagon-layer. Use Phong shading, ambient light techniques given in https://github.com/uber/deck.gl/blob/7.3-release/examples/website/3d-heatmap/app.js
Load the hexagon layer tower in an animated way like constructing them from the ground to upwards
To plot the journey of a user (cartographer + challenger) we need to fetch all of their points - listed points, challenging points, and others. We need to capture every point's name, geohash, deposit, createdAt, and status.
An official FOAM API (example) gives these details only for the listed points.
Now, to fetch these details for other points we are following a quiet long process (replicating working of https://foam.tools) which is described as follows:
challenged
points and storing it an arraychallenge_id
into poll_id
for each of themlistingHash
from poll_id
using another FOAM's API (example) for every point in the array.listinghash
This is a really long process and takes time even when we are parallelly making requests for unrelated data. Can we reduce this process somehow?
Dependabot couldn't find a package.json for this project.
Dependabot requires a package.json to evaluate your project's current JavaScript dependencies. It had expected to find one at the path: /src/package.json
.
If this isn't a JavaScript project, or if it is a library, you may wish to disable updates for it in the .dependabot/config.yml
file in this repo.
I am inspired by the Scavenger hunt Blockcities is organizing.
Our version of competition could be to get people excited to build the tallest tower in the world (probably incentivize the winners by FOAM tokens?)
Since tallest towers are a function of the density of points in a small area, this would invariably lead to people ganging up in clans and then making towers. Imagine the Pokemon Go AR craze where people were roaming around finding pokemons mapped to FOAM.
A contrarian take on the above would be introducing a function of staked tokens into the mix. Currently, our viz has 2 separate modes of calculating tower lengths and a metric could be devised to merge these 2 seperate modes into 1 mode. Now somebody with a lot of money (batman) could plot one huge tower by staking bags of points and leave other clans in the dust.
Get YouTube live streamers working their magic on top of these.
Outcome:
POI activity https://foam.tools/#/stats/activity goes 10x.
<DeckGL
initialViewState={{ ...this.state.viewport }}
controller={true}
layers={[this.state.renderLayer]}
onClick={(info, event) => {
console.log("info", info);
console.log("event", event);
}}
>
<StaticMap
mapStyle="mapbox://styles/mapbox/dark-v9"
mapboxApiAccessToken={MAPBOX_ACCESS_TOKEN} >
<button onClick={event => {
console.log("hey", event); // This is not logging when click
}}>click me</button>
</StaticMap>
</DeckGL>
Medium Priority:
Add FOAM's navbar
Color of address input box gets inverted when focused
List top cartographers on viz-2 home page for a better UX
Our specific use case is to fetch data according to the user's current viewport and render using an aggregation layer (Hexagon layer ideally)
To achieve this we called a method at capturing onDragEnd event that fetched data for the user's current viewport using FOAM's API and updates the state so that the layer gets re-rendered with the new data points. But there are precision issues irrespective of zoom level which affects the aggregation and the same viewport shows different visualization. You can try at foamviz
Issues observed similar problem #935, #906 and #647 at around zoom level 14+. The latter issue mentions:
deck.gl offers two solutions. Layers have an fp64 prop that enables 64 bit GPU calculations. This solves the problem at the cost of some performance. You probably won't notice the difference unless you have a lot of icons (not sure where the limit is for IconLayer, maybe >100K).
The other solution is to use the METER_OFFSET projection mode. You'd convert your icon positions to meter offsets from a center lng/lat.
Since Hexagon layer only supports COORDINATE_SYSTEM.LNGLAT (default) we shifted to GridLayer and tried fp64 with COORDINATE_SYSTEM.LNGLAT_DEPRECATED since we're using deck.gl version 7.3.2 but it didn't work out, not even in CPUGridLayer. Maybe it didn't support the GPU of the device we tested, anyway It doesn't seem a scalable solution since the users might not have a supported GPU. So, we're only left with METER_OFFSET projection mode.
This issue gives a hint on how to convert COORDINATE_SYSTEM.LNGLAT to COORDINATE_SYSTEM.METER_OFFSET but there's some problem in the calculation as we're able to render points on screen but they rendered at a place very far from where they should have been also they show unexpected behavior of disappearing after changing the viewport a few times. Since no documentation is provided on conversion of lng-lat to meter-offset apart from issue #1165 and people have upvoted the implementation so the only reason for the precision issue is how the decl.gl renders the layer internally.
You can check our implementation in feature-precison-issue branch
Performance optimization in all the three visualizations.
Ideal:
From: https://firstround.com/review/how-superhuman-built-an-engine-to-find-product-market-fit/
Tools:
https://developers.google.com/web/tools/chrome-devtools/evaluate-performance
Todo List:
Speculation that these would have compounding effects:
API optimizations.
Storing fetched data in a cache.
Instead of using inline styles eg, please use something from the below:
Dependabot couldn't find a package.json for this project.
Dependabot requires a package.json to evaluate your project's current JavaScript dependencies. It had expected to find one at the path: /src/package.json
.
If this isn't a JavaScript project, or if it is a library, you may wish to disable updates for it in the .dependabot/config.yml
file in this repo.
For viz 3:
For viz 2:
The white screen is the bug. The user is clueless at that stage what happened.
High Priority/ Critical constraints:
Jittery animation and delayed rendering of towers in viz-poi-analytics
Long fetching time in viz-cartographer-journey
The new Blocklytics API has already been integrated but we still need improvement in order to have a good UX
HomePage fixes
They will be addressed in the last as they are design-related issues
Medium Priority fixes
Part of foamviz project
in foam-navar in each vizfetching 0xadsfw23.. cartographer's data
Low priority fixes:
All issues need to be stress-tested on the mobile screen as well and make sure nothing breaks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.