Coder Social home page Coder Social logo

ultrasoundmoney / frontend Goto Github PK

View Code? Open in Web Editor NEW
198.0 13.0 55.0 168.54 MB

ultrasound.money frontend

Home Page: https://ultrasound.money

License: MIT License

JavaScript 0.49% TypeScript 96.59% SCSS 2.67% Dockerfile 0.21% CSS 0.03%
eip-1559 eth ethereum fee-burn ultra-sound-money

frontend's Introduction

ultrasound.money frontend

This is the frontend for ultrasound.money—contributions welcome!

Usage

  • clone
  • yarn install
  • yarn dev

frontend's People

Contributors

alextes avatar blascokoa avatar blombern avatar brunowego avatar ckoopmann avatar dawsbot avatar dependabot[bot] avatar gkucmierz avatar iammdmusa avatar janndriessen avatar justindrake avatar kylekaplan avatar ledbetterljoshua avatar mattnaus avatar oleglomaka avatar omahs avatar renovate[bot] avatar schnerd avatar sudeepgumaste avatar usuaosilver avatar vid201 avatar wackerow avatar yarosl35 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

frontend's Issues

When selecting "SIMULATE PoW", the graph y-axis updates (needlessly lowering the y-axis starting point) when a new data point comes in.

Screen.Recording.2022-11-10.at.16.44.16.mov

Was able to reproduce it after a while. It depends a bit on the screensize and perhaps even the size of the delta of the new data point. It doesn't happen for me on the since_merge time frame for example.

I'm not sure how highcharts picks its chart dimensions. Things I can come up with:

  1. Lock the min and max. This would require us writing our own function to pick bounds given a set of sets of points. As it needs to work across time frames and with a single or multiple series.
  2. Try to force the chart to redraw after the simulate button is pressed. I believe highcharts has a method for this after you capture a ref. An example may be found in the TwoYearProjection.

imo not worth it for the small gain of the axis not shifting on the first point. Depending on how large the supply changes are relative to the chart range I'd argue we want the y-range to be shifting. You could add another layer of complexity and only take over the min / max in select scenarios, but which? Furthermore, that still doesn't guarantee anything of course. It may well have to do with how the x-axis shifts. It all depends on how highcharts works which is magic (but works quite well!).

Finally also consider this doesn't even happen on every time frame, only some, depending on screen size, and maybe point delta it seems.

Another objection that comes to mind to pouring more time into this, especially suggestion 1. is that we already were controlling the min and max. I don't remember why we did it. Something to do with the animation I believe. In addition, the way we did it was by making the series transparent to keep the chart stable. Either way, I took it out when multiple time frames were introduced as those required more complex min / max control than we had. Putting it back in feels like moving against the current (i.e. stacking complexity higher than already proved sustainable).

The component counts ~700 LOC, let's try to make it simpler. Not more complex. If someone has an idea to make the chart simpler and fix this, even through design changes, I'm all ears.

  1. Could be worth giving a shot. Not enough for me to spend time I think but if someone has some time left go for it 👍 .

New Feature - Layer 2 Section / Widget

A new section / set of widgets dedicated to Layers 2 and their effect on the burn / eth supply

Could include:

  • Time series graphs depicting following metrics over time :

    • Development of TVL / Activity / "Scaling Factor"
    • Cumulative burned eth
      (with total amount accross L2's depicted by default and then breakdown by L2 upon mouse hover, similar to "ETH 2Y supply projection" graph)
  • Layer 2 dedicated leaderboard.

  • Projections into the future

Images load with a white rectangle outline.

We upgraded to Next13. Next13 replaces the next/image component that we heavily depended on with what was previously next/image/next. Whereas the previous next/image is now next/image/legacy.

The new one has some improvements we'd like to use, but it also suffers from a white outline bug in Safari. Let's wait with the upgrade until it's fixed.

vercel/next.js#40615

I have given the proposed workaround a shot but it doesn't appear to work.

Using this issue to track.

continuously update tab title prices

Continuously updating prices (even when the tab is not active) will make the site feel more alive. The gas price updates at most once per slot but ETH price can update arbitrarily fast.

Screenshot 2024-01-16 at 11 28 41

low-hanging visual tweak to the supply equilibrium

The supply equilibrium is a key data point. To better highlight it my suggestion would be to dynamically colour it orange or blue depending on whether the equilibrium is higher or lower than the current supply (orange if lower, blue if higher). It's a tiny change but will help bring this widget to life.

Screenshot 2024-01-16 at 11 14 58

issuance breakdown wrong ordering

Notice that the segments in the slider are not ordered correctly. The "early contributors" segment should come in third position, not fourth position.

Screenshot 2024-01-16 at 11 20 06

Base Fees - Extend Datapoint-Tooltip

The data-point tooltip in the Base Fees chart could be extended to include the burned / issued eth amount.
Also maybe switch to a more concise / readable datetime format ?

image

gas streak leaderbord

It would be very interesting, to add 2 statistics regarding the metrics of consecutive blocks burning ETH (gas streak).

Statistic 1: the leaderboard of the longest "ultrasound" (with eth burned) gas streaks.

Statistic 2: the largest total amount of ETH burnt during "ultrasound" gas streaks.

Update ETH Scarcity Widget

The scarcity widget tries to give a simple overview of how much ETH is currently locked up somewhere for use as collateral. This ETH can be considered "frozen" which is good for the security and utility of the network.

The simplest improvement it could use is that the DeFi category has been stale for a long time and it would be great to have a decent, auto-updating estimate instead. We used to use DefiPulse but their API was deprecated long ago.

Step 1 would be to figure out where we can get a good account of how much ETH is locked into DeFi (defillama, glassnode, tokenterminal, other).
Step 2 would be to then write a piece of code which can run every 10-min or so and write into our database how much ETH is locked in DeFi.

Context

  • Storage of the eth-in-defi value happens using a key value pair in our DB, there is code is place to handle everything else. So an isolated module that updates this single key value pair when run would work perfectly already.
  • In the ultrasoundmoney/eth-analysis-rs repo you can find an old commit in the git tree cd8d761426b9ec9502fd84f188b51d3c65683188 which removes a Rust module capable of using the DefiLlama API at the time to get and idea of the amount of ETH in DeFi protocols but if I recall correctly we were unhappy with the accuracy. That is to say, not confident the estimate was any good. Maybe now it is, maybe we'd need another method entirely.

Bonus

If you'd like you could make this issue a little bigger, you might even add a category if you feel there is a clear place ETH goes where it becomes mostly inert, which we can measure. "Lost ETH" is an example of this but hard to measure.

Add Feature - Eth Money Velocity widget

Rationale

A money metric frequently used in trad finance regarding currency. Gives good indicator about the relative change in economic activity across time.

General formula

V = Velocity of money
GDP = total value of economic transactions
M1 = Monetary Base

$V = \frac {GDP}{M1}$

Eth relevant inputs

Velocity
The idea here, is to include all transfers of eth in Ethereum economy, this formula should cover it:

$GDP_{eth}$ = eth_pure_transfers + tx_msg.value + weth.transfer + weth.transferFrom

NOTE: This does not include L2s + sidechains

M1 - coins and currency in circulation

M1 should include coins and currency in circulation. "in circulation" could be debatable. To be consistant with other graph we could use the liquid ETH from "scarcity" widget
image

Thus:

M1 = totalSupply - ("staking" +"defi (stale)" + "burn")

Resources

velocity
Money supply

Where is the Contract Address -> Description data?

There are a number of contracts in the burn leaderboard that still don't have a name / description even after being there for weeks (such as Base). It seems like the data for this isn't public? Could you open source this data or point me to where it is so the community can contribute and add name/description/icon to contract addresses.

A quick question about `followed-by`

Hello friends !

Love what you guys are building keep going !

I wanted to make section that looks like your "Me and the Fam" section. I wanted to understand how you guys use the Twitter API to see who has or has not the bat signal. I saw that you guys are using this query : http://localhost:3000/api/fam/fricoben/followed-by

Capture d’écran 2023-02-27 à 14 36 42

Do you have Database for that ? Can someone briefly explain to me how it works cause I can't find any followed-by query that can help me.

Thanks a lot and sorry to disturb you with an issue in your repo.

You can contact me on Telegram and discord with @fricoben.

Supply Equilibrium - Revisit slider limits

The slider limits for the Supply Equilibrium chart are currently:

  • Issuance Rewards 2.5 / 5 %
  • Burn Rate: 0 / 4.5 %

We should review those values and adjust.

Likely we will want to:

  1. Reduce the lower bound on the issuance rewards
  2. Reduce the upper bound on the Burn Rate (maybe 3.5%)

image

Eth Supply Projection - Dynamic default values for sliders

The default / start values for the "Base Gas Price" and "Staking Amount" are currently hard coded to 60 Gwei / 30 M respectively.
We might want to populate this values dynamically instead based on the latest data. (current values or some kind of projection formula).

image

Add L2 to TVS summary

We have multiple widgets designed for a complete L2 section we'd like to have on the site. Feel free to ask. Before then it could be nice to simply introduce a L2 line to the summary widget in the TVS section.

Example sketch:
image

  • Find a data source (maybe L2 beats)
  • Use a cronjob pattern as seen in eth-analysis-rs repo to write an L2 TVS to the DB periodically. We have an existing caching module that makes it easy to write updates and have the API listen for them and expose them.
  • Add a new line to the TVS summary widget in this repo once the API is deployed.

Help us categorize contract fee volume

We'd like to know which category of smart contract ETH is stored in (#274), and spent on.

We have automated categorization, or "metadata collection" as we call in in the code base but this doesn't nearly manage to label all volume. We could use help with both:

  • Manual tagging of contracts. For this simply comment below and I'll set you up with trusted access)
  • Automated tagging. For this it's up to you to figure out better ways of obtaining contract metadata , I'm happy to share my learnings thus far and detail how we obtain metadata currently from Etherscan, OpenSea, Twitter, and CoinGecko.
  • make existing admin tooling accessible by users which are logged in with their Twitter on the site. We already have a list of twitter accounts we trust, and twitter login is already enabled on the site, all we need is more polished admin tooling.

Design - Inconsistencies in Fonts etc.

There are inconsistencies in design details such as differents fonts being used in different parts of the website ?

@JustinDrake Feel free to add concrete examples / screenshots here, where you spotted such issues.

I'd like to help but don't know where

Hé potential contributor 👋,

We have tons of features we'd like to add to the site still, but we don't have neat issues for all of them.

If you don't see a neat issue you can pick up but do want to contribute, let us know here and we'll offer something 🤲, or rather, gladly accept your offer to contribute.

Gas Market Min Max Etherscan Link

We want the min and max marker in the Gas Market widget to link to the etherscan page of the block which set said min or max gas fee.

This will involve a small amount of backend work. Updated several existing SQL queries to retrieve an additional field. In addition to a small frontend update, turning the markers into links to Etherscan.

  • Add block number for min and max gas stats to the base fees per gas stats API endpoint for each time frame.
  • Use the block number in the frontend to link to Etherscan.

Add 1 Year timeframe

Now that it's been a year since the merge, we no longer have to rely on annualized data! Would be cool to just click 1Y to have the actual issuance/burn/supply growth data for the past 365 days

New Feature - Blob Data Burn

Once EIP-4844 has shipped on mainnet we will want to display details on the Blob fee market and it's effects on burn / eth supply.

Answering questions such as:
- Who is consuming the blobs ?
- How much data is going through the blobs ?

(Probably will have a lot of overlap with #311 , might even be in the same widget ? )

@JustinDrake Lmk if you have concrete ideas for specific graphs / visualizations that would work here. Especially for the second question.

Panda emoji and other images load with a white rectangle outline.

We upgraded to Next13. Next13 replaces the next/image component that we heavily depended on with what was previously next/image/next. Whereas the previous next/image is now next/image/legacy.

The new one has some improvements we'd like to use, but it also suffers from a white outline bug in Safari. Let's wait with the upgrade until it's fixed.

vercel/next.js#40615

I have given the proposed workaround a shot but it doesn't appear to work.

[Perf] Serve properly sized images

The easiest way to do this is to use the Next.js Image everywhere instead of the html img tag. When using the next.js Image component, you are required to provide width and height so it can do resizing. This allows images to be served at the size it will display and Next.js can optimize with next-gen formats as-well.

image

walkthrough feedback, August 15

  • (bug) the top historical bar disappeared
  • (bug) FAQ link doesn't land properly (clicking the FAQ link again does!)
  • (bug) the bottom bar reappears at the very bottom
  • (feature) we need a new "merge" part in the historical section
  • the top and bottom bars should show and hide simultaneously when entering and exiting the historical section

Supply curves (USD, BTC, ETH)

  • (bug) The curves are obstructed by the bottom bar (screenshot 1). My suggestion is to only show the bottom bar during the historical section going through the big forks (genesis, byzantium, constantinople, phase 0, london, merge).
  • (bug) If you start on "BTC" and then click on "USD", a few pixels of the ETH curve shows up for an instant.
  • (bug) The animation doesn't work on mobile.
  • (polish) The glow effect is clipped (see screenshot 2).
  • (bug) The accompanying text doesn't show on some screen sizes (see screenshot 3).

misc

  • (bug) the top video animation glitches on load
  • (bug) text/bar collision on some screen size
  • (polish) remove the #faq hashtag when outside the FAQ section
  • on small screens the merge text labels appear on top of the animation
  • (bugs) on mobile (Chrome for iPhone 13) the UX is very broken (see screenshot 6).

screenshot 1

Screenshot 2022-08-10 at 22 29 08

screenshot 2

Screenshot 2022-08-15 at 16 53 48

screenshot 3

Screenshot 2022-08-15 at 16 55 05

screenshot 4

Screenshot 2022-08-15 at 16 57 53

screenshot 5

Screenshot 2022-08-15 at 17 00 07

screenshot 6

image

Rewrite PriceModel marker rendering

Screenshot 2022-11-11 at 11 44 58

This widget has logos that overlap sometimes, depending on shifts on real-world p/e ratios. It would be nice to rewrite which logos are visible using a system as found in the 200Y projection widget. In short:

  • Make an ordered list of markers we have.
  • From first to last, only render those markers which do not overlap with any of the markers with a lower index.
  • ETH should be first on this list.
  • The rest of the companies should be ordered by familiarity with the general public.
  • PE ratios sometimes come back null from the API. Skip those.

POW issuance underestimation

The simulated POW issuance since the merge in EthSupplyWidget and SupplyChange are calculated by subtracting the POS issuance/day from the POW issuance/day and multiplying by the number of slots/day.

Subtracting the two suggests that powIssuancePerDay reflects the issuance to both miners and validators during the time when the two chains were running in parallel, but the comment where the POW issuance per day is declared cites https://etherscan.io/chart/blockreward, and their chart only includes issuance from mining.

image

By subtracting the POS issuance from a number that didn't include the POS issuance in the first place, the simulated POW issuance in these two widgets is being underestimated.

It's also worth noting that the IssuanceGauge, the only other component that uses powIssuancePerDay, does not subtract the two to find the daily POW issuance.

Misc cleanups

top-left infobar

supply dashboard

  • [backend] Synchronise all the widgets in the dashboard to use the same clock.
  • #245
  • #246

ETH SUPPLY

  • #247
  • #248
  • Reduce the granularity for "SINCE MERGE" to 1d
  • The grey vertical line doesn't start at the first datapoint for the timeframe.
  • The panda emoji blinks with every update at the graph, especially on mobile.
  • #250
  • Add smoothing of the chart line, similar to the base fees chart.
  • Annualised supply growth value is not selectable.
  • The "since merge" graphs don't start at the merge (because of rounding).
  • [backend] Add a "SINCE BURN" timeframe.
  • Add a stylised tooltip for the annualised supply growth.

SUPPLY CHANGE

  • Have the backend supply the value at the start of the timeframe. (E.g. for the 1-day timeframe provide the value exactly 1-day ago, without any rounding.)
  • When toggling "SIMULATE PoW" the colour doesn't smoothly animate between orange and blue.
  • When toggling "SIMULATE PoW" the colour doesn't respect the value sign during the animation (orange for and blue for +).
  • Add a stylised tooltip for "SIMULATE PoW".

CURRENT SUPPLY

  • Flash the value orange or blue depending on whether the current supply went up or down.
  • [backend] Synchronise the EVM balances on a slot-by-slot basis.
  • Add a stylised tooltip for the nerd emoji

GAUGES

  • Make the spacing between the gauges and the time frame selectors consistent. (E.g. remove bottom padding from gauges.)
  • The animated numbers for burn and issuance when going from "ETH" to "USD" go in the negatives.
  • [backend] Use the live PoS issuance instead of a hardcoded estimate.
  • [backend] Add a "SINCE MERGE" timeframe for the gauges.
  • [backend] Add a "SINCE BURN" timeframe.
  • Make "SINCE BURN" the default timeframe for the whole dashboard.
  • Stylise the tooltip for the "since burn" timeframe.

gas dashboard

BASE FEES

  • Inconsistent font weight for ultra sound barrier gas price

GAS MARKET

  • Inconsistent font weight for gas prices (needs to be bolder)
  • Inconsistent colour for gas prices (needs to be flat colours)

projections dashboard

2Y PROJECTION

  • Use consistent styling for the sliders and slider texts.
  • Add percentages for "in accounts", "in contracts" and "in validators" within tooltip
  • Review this widget in Figma.

burn dashboard

  • Rename "the burn" to "burn".

LATEST BLOCKS

  • Make block number grey (see Figma).
  • Use consistent colour (flat orange/blue) for gas prices.

BURN CATEGORIES

  • [backend] Fix the "SINCE BURN" timeframe.
  • "all time frame unavailable, data sync in progress..." -> "NOT AVAILABLE"
  • [backend] Fix the 5min timeframe.
  • "5 minute time frame unavailable" -> "NOT AVAILABLE"

TVS dashboard

ETHEREUM SECURES

  • The ETH value is off. Should be [value taken from top infobar] * [value taken from "CURRENT SUPPLY" in the supply dashboard].
  • [backend] NFTs value is off (we show $21.55B, nftgo.io says $22.75B)

NFT LEADERBOARD

  • [backend] Fix Twitter metadata (e.g. "Art Blocks" and "The Sandbox LAND" don't have Twitter images).

ERC20 LEADERBOARD

  • [backend] Fix Twitter metadata (e.g. "BTSE Token" and "Waves" don't have Twitter images).

monetary premium dashboard

SCARCITY

  • [backend] Fix "defi (stale)"

VALIDATOR REWARDS

  • Add "SINCE BURN Xd" in the top right corner.
  • [backend] Need to support all timeframes ("since merge" is especially important).

FLIPPENINGS

  • Refresh the hardcoded estimates.

fam dashboard

  • "join 5000+ fam members" -> Display numbers with commas (e.g. 5000 -> 5,000).

POAP dashboard

ELIGIBLE ACCOUNTS

  • [backend] For accounts that have claimed the POAP, add link to the corresponding https://app.poap.xyz page. E.g. https://app.poap.xyz/scan/sassal.eth for Anthony Sassano.
  • Reset the scrollbar to the top when typing in the search bar.
  • Rename "CLAIMED?" to "CLAIM"
  • Add the ability to sort by claim timestamp when clicking on "CLAIMED?". (Add a little triangle to show that it's ordered by claim timestamp.)

CLAIM POAP

  • Show full nerd emoji colours when hovering over "CLAIM POAP" (similar to how it is done to "SECURITY RATIO").
  • [backend] Show if individual criteria are matched.

comment for multiple dashboards

  • The spacing between dashboards is inconsistent.
  • Design a pretty-looking tooltip saying something like "MORE INFO" when hovering over the nerd emojis.
  • Add a left navigation bar (as designed by Thomas) to scroll across the various sections.
  • Add a cross-referenceable error ID on unhandled errors.

Figma

  • Put all the legacy design to the side in a historical/legacy section.
  • Generally clean up Figma so that new team members can easily use it.

Miscelleneous ideas/feature requests

Here are some random ideas I've had over time to add to ultrasound.money, in no particular order:


A graph of Ether's annualized supply growth over time. Either last 24 hour, or annualized growth since merge.

The first one shows the whole "capped issuance vs uncapped burn" concept. The second one is just for fun, it's similar to the existing "supply graph since merge" graph, except the rate goes down when supply change stagnates (as expected) and becomes harder to budge the longer time goes on.


Issuance offset expressed in terms of time instead of a factor (simple mockup)

For the average person, I figure it's easier to grasp "In the last hour, we burned 6 hours' worth of issuance" than the displayed numeric ratio


A widget that tracks the highest supply ever recorded, displaying something like "If all the burn suddenly stopped, it would take X days to go back to the previous supply peak of 120,534,227.79 ETH". Or just simply something tracking the "supply change since peak"

It'd be cool, but admittedly not that useful beyond helping gauge confidence when claiming "we will never reach the supply peak again"

Maybe instead of "if all the burn stopped" we can use a timeframe's average basefee for the calculation (and when the basefee is greater than the ultrasound barrier, the answer would simply be "never"!)


"Since merge" time frame (although I believe that's already in the works), and I think we can safely have a 1 year time frame now too


The supply change widget needs a nerd tooltip displaying "Ether issued: X, Ether burned: Y, net supply change: X-Y" to make those figures more accessible as well as make it clearer that we're talking about net supply change, even if we're net negative there's still been a very positive number of ETH that were issued (I see people making that mistake too often)


Similar to above, a way to graph explicitly how much has been burned would be cool, maybe something like this


An option to show tips in the basefee graph. I really miss that feature from watchtheburn - seeing tips suddenly shoot up is an obvious sign that the basefee will quickly follow, plus there's something truly beautiful and satisfying about the way it does it with a clean exponential curve

Hard mode would be tracking MEV as well (from some mevboost api?) and adding that on top of the tips on top of the basee

Security Ratio is calculated wrong.

// 1e18 is Wei -> ETH, 1e12 is displaying in trillions, 1e2 is scaling down from using cents not dollars above.
// We then leave four orders of size, because we expect a number < 0, which a bigint cannot hold.
(num) => JSBI.divide(num, JSBI.BigInt(1e12 * 1e18 * 1e2 * 1e-4)),

The total amount of assets on Ethereum isn't what matters from a security standpoint. What matters is the total amount of assets that transferred ownership between most recent finalized block and head. Even more precisely, it is the total amount of assets transferred in exchange for some off-Ethereum good/service.

It is impossible to know this number precisely as we cannot know which transactions are causing asset ownership changes nor which are in exchange for off-chain goods/services, but we can probably get into the right ballpark by just assuming all ERC20 and ETH and NFT transfers are between owners in exchange for off-chain assets. This will give us a far more realistic view of the security ratio than just totally all assets on Ethereum and dividing by the stake.

On the stake side of the equation, we shouldn't count all stake, but rather the amount of stake an attacker would lose in an attack. In the most pathological scenario, I think this is something like 20% (or maybe it was 30%) of all stake due to possible proposer boost manipulation. Note: this assumes that there is no custodial or pooled staking, but for simplicity we should probably ignore these anyway and be optimistic.

So final formula would be something like total_assets_transferred_since_finality_in_usd / (0.2 * total_staked_eth_in_usd).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.