uPlot
design-reviews
Our great sponsors
uPlot | design-reviews | |
---|---|---|
18 | 9 | |
8,436 | 315 | |
- | 1.0% | |
8.5 | 4.7 | |
17 days ago | 29 days ago | |
JavaScript | JavaScript | |
MIT License | Creative Commons Zero v1.0 Universal |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
uPlot
- Small and fast 2D canvas chart for time series, lines, areas and bars
-
Rendering data that changes very frequently
Here is a very efficient 2D canvas lib that is extremely efficient https://github.com/leeoniya/uPlot i recommend looking through their readme and seeing if it solves your current problems.
- Graphing Libraries that are as good as Excel?
-
Show HN: Inflation-adjusted stock charts – Total Real Returns
BACKEND:
It's about 3000 lines of Crystal code https://crystal-lang.org/ -- it's been an absolute dream to program in. Ruby-like syntax, statically compiled performance. Nice standard library. Would recommend :)
Performance == caching
Local ephemeral filesystem for shortest-term caching.
Redis for shared medium-term caching and locking.
S3-compatible object storage for longest-term caching (for raw data feeds pulled every evening by a cronjob).
FRONTEND:
Bootstrap
uPlot https://github.com/leeoniya/uPlot
Just a sprinkle of inline JS+CSS on the page.
-
It's always been you, Canvas2D
you can use matchMedia to detect devicePixelRatio changes and re-sync:
https://github.com/leeoniya/uPlot/blob/190134aa844cfa2a0c052...
everything stays crisp even as you browser-zoom. e.g. https://leeoniya.github.io/uPlot/demos/area-fill.html
-
AMP Has Irreparably Damaged Publishers’ Trust in Google-Led Initiatives
Safari's slow release cadence (typically tied to OS version upgrades) does leave it more broken and for longer than Firefox, Chrome, Opera and other browsers that are updated more frequently and not tied to the OS.
just recently i ran into incompatibilities with Safari < 14 needing the old-spec matchmedia api:
https://github.com/leeoniya/uPlot/issues/538#issuecomment-87...
-
JS library for graphing huge amounts of data
uPlot will handle this. https://github.com/leeoniya/uPlot
-
WebGL charting libraries
If you are showing 100s of thousands of points, I'd still go with canvas eg uPlot. It's a really, really excellent library.
-
[task] Program uplot support into node-red-dashboard (javascript)
The existing node red chart tools is not great. I'd like to be able to use uplot instead. The uplot-charts node should work very much like that charts node built into node-red-dashboard.
-
Optimizing at the CPU instruction level in the browser w. Rust and WebAssembly
super cool!
i've done my share of optimizations and benchmarking charting libs [1] but this goes deeper still.
SVG is not a good choice for large raw datasets when you need performance.
design-reviews
-
Modern CSS One-Line Upgrades – Modern CSS Solutions
> The other value of pretty specifically addresses preventing orphans and can be more broadly applied. The algorithm behind pretty will evaluate the last four lines in a text block to work out adjustments as needed to ensure the last line has two or more words.
This is very, very badly wrong. `text-wrap-style: pretty` is explicitly not about orphans and does not have a defined algorithm. It’s about prettiness, a subjective thing that will have different interpretations in different browsers and over time, and this is extremely deliberate. What the author has described is what Chromium has implemented at this time.
All the spec says is <https://www.w3.org/TR/css-text-4/#valdef-text-wrap-style-pre...>, that `text-wrap-style: pretty` “Specifies the UA should bias for better layout over speed, and is expected to consider multiple lines, when making break decisions. Otherwise equivalent to auto”.
TAG review of the feature requested that implementers use at least two heuristics, “to avoid authors using it as a proxy for a more specific thing” <https://github.com/w3ctag/design-reviews/issues/864#issuecom...>.
For total clarity: ‘pretty’ is not necessarily any different from ‘auto’, and ‘auto’ is permitted to do exactly the same thing as ‘pretty’ does, and I hope and expect that browser makers will eventually go that direction for most contexts (contenteditable/ being the main exception, and maybe lower-powered platforms). If you explicitly want a greedy/first-fit technique, use `text-wrap: stable`. Firefox has had a bug open for 13 years where shifting in this direction and using Knuth–Plass almost everywhere has been seriously contemplated <<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=630181" rel="nofollow">https://bugzilla.mozilla.org/show_bug.cgi?id=630181</a>>, long before text-wrap-style.
-
The `hanging-punctuation property` in CSS
CSS specs are explicitly not interested in prescribing TeX-level control; text-wrap-style is a good example of this: it’s just hints, with the actual algorithms completely UA-defined. And in fact, they’re going out of their way to recommend including multiple distinct heuristics of prettiness, so that developers don’t use it as a proxy for just one thing and start relying on something that is explicitly and deliberately undefined. <https://github.com/w3ctag/design-reviews/issues/864#issuecom...> (And Chromium has done just this: <https://bugs.chromium.org/p/chromium/issues/detail?id=143279...>.)
In other words: you’ve already lost!
-
Microsoft Broke a Chrome Feature to Promote Its Edge Browser
Since people seemed to believing Google PR at face value here is the w3c position in rejecting the proposal:
The intention of the Topics API is to enable high level interests of web users to be shared with third parties in a privacy-preserving way in order to enable targeted advertising, while also protecting users from unwanted tracking and profiling. The TAG's initial view is that this API does not achieve these goals as specified.
The Topics API as proposed puts the browser in a position of sharing information about the user, derived from their browsing history, with any site that can call the API. This is done in such a way that the user has no fine-grained control over what is revealed, and in what context, or to which parties. It also seems likely that a user would struggle to understand what is even happening; data is gathered and sent behind the scenes, quite opaquely. This goes against the principle of enhancing the user's control, and we believe is not appropriate behaviour for any software purporting to be an agent of a web user.
The responses to the proposal from Webkit and Mozilla highlight the tradeoffs between serving a diverse global population, and adequately protecting the identities of individuals in a given population. Shortcomings on neither side of these tradeoffs are acceptable for web platform technologies.
It's also clear from the positions shared by Mozilla and Webkit that there is a lack of multi-stakeholder support. We remain concerned about fragmentation of the user experience if the Topics API is implemented in a limited number of browsers, and sites that wish to use it prevent access to users of browsers without it (a different scenario from the user having disabled it in settings).
We are particularly concerned by the opportunities for sites to use additional data gathered over time by the Topics API in conjunction with other data gathered about a site visitor, either via other APIs, via out of band means, and/or via existing tracking technologies in place at the same time, such as fingerprinting.
We appreciate the in-depth privacy analyses of the API that have been done so far by Google and by Mozilla. If work on this API is to proceed, it would benefit from further analysis by one or more independant (non-browser engine or adtech) parties.
Further, if the API were both effective and privacy-preserving, it could nonetheless be used to customise content in a discriminatory manner, using stereotypes, inferences or assumptions based on the topics revealed (eg. a topic could be used - accurately or not - to infer a protected characteristic, which is thereby used in selecting an advert to show). Relatedly, there is no binary assessment that can be made over whether a topic is "sensitive" or not. This can vary depending on context, the circumstances of the person it relates to, as well as change over time for the same person.
Giving the web user access to browser settings to configure which topics can be observed and sent, and from/to which parties, would be a necessary addition to an API such as this, and go some way towards restoring agency of the user, but is by no means sufficient. People can become vulnerable in ways they do not expect, and without notice. People cannot be expected to have a full understanding of every possible topic in the taxonomy as it relates to their personal circumstances, nor of the immediate or knock-on effects of sharing this data with sites and advertisers, and nor can they be expected to continually revise their browser settings as their personal or global circumstances change.
A portion of topics returned by the API are proposed to be randomised, in part to enable plausible deniability of the results. The usefulness of this mitigation may be limited in practice; an individual who wants to explain away an inappropriate ad served on a shared computer cannot be expected to understand the low level workings of a specific browser API in a contentious, dangerous or embarrassing situation (assuming a general cultural awareness of the idea of targeted ads being served based on your online activities or even being "listened to" by your devices, which does not exist everywhere, but is certainly pervasive in some places/communities).
While we appreciate the efforts that have gone into this proposal aiming to iteratively improve the privacy-preserving possibilities of targeted advertising, ultimately it falls short. In summary, the proposed API appears to maintain the status quo of inappropriate surveillence on the web, and we do not want to see it proceed further.
https://github.com/w3ctag/design-reviews/issues/726#issuecom...
-
Shoelace: A Web Component Kit
Ah, I didn't realize this wasn't solved -- a quick search turns up:
- https://github.com/WICG/webcomponents/issues/788
- https://github.com/w3c/DOM-Parsing/issues/58
- https://github.com/w3ctag/design-reviews/issues/494
- https://web.dev/declarative-shadow-dom
In pre-render they seem to have started in this direction extremely recently:
https://github.com/prerender/prerender/pull/731/files
I don't use prerender so I can't definitively speak to it being solved and hiccup-free, but I think that limitation is going to go away in the future.
-
It's always been you, Canvas2D
There was a ton of work across browser vendors to make this a part of spec:
https://html.spec.whatwg.org/multipage/canvas.html#the-canva...
It's all there. It's all official. That github page was just one part of reaching consensus. There's also TAG review:
https://github.com/w3ctag/design-reviews/issues/627
FWIW Mozilla and Safari signed off on all of these changes at some point in time somewhere, hence why it's allowed to be part of spec. There were some changes that were not allowed to be part of the new API because one of those two said no (like perspective transforms, conic curves).
-
Chromium: Permit blocking of view-source: with URLBlocklist
I would like to quote from the W3C TAG comments on the Managed Device Web API:
https://github.com/w3ctag/design-reviews/issues/606#issuecom...
> > "NOTE: [RFC7258] treats pervasive monitoring as an attack, but it doesn’t apply to managed devices."
> We don't think this is adequate. Given the power dynamics at play in an employer-employee relationship, the UA should still be working in the best interests of the end-user (the employee) even if the device being used is managed by an administrator. That is to say, pervasive monitoring is never a feature.
Chrome may not consider it part of the "web-exposed platform", since the code doesn't live in blink/, but the same logic applies to view-source. The needs of the users are more important than the security theatre you wish to put on for their teacher's benefit.
-
It’s time to ditch Chrome
One case directly related to Chrome browser, and sending data to Google, there is issue with tracking headers. [source](https://github.com/w3ctag/design-reviews/issues/467#issuecomment-581944600)This allows tracking specific Chrome instance among all Google services.We cannot say whether this is used for tracking, but it allows it for sure.\[Register article about the same matter.\]([https://forums.theregister.com/forum/all/2020/02/05/google\_chrome\_id\_numbers/](https://forums.theregister.com/forum/all/2020/02/05/google_chrome_id_numbers/))
- Tag Kills FirstParty Sets Proposal
What are some alternatives?
PlotJuggler - The Time Series Visualization Tool that you deserve.
Firefox-UI-Fix - 🦊 I respect proton UI and aim to improve it.
Grafana - The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
uBlock - uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.
Charts - ⚡ Laravel Charts — Build charts using laravel. The laravel adapter for Chartisan.
BezierInfo-2 - The development repo for the Primer on Bézier curves, https://pomax.github.io/bezierinfo
laravel-recharts - A Laravel package for using the Recharts charting Library. Docs: https://kaishiyoku.github.io/laravel-recharts
Bitwarden - The core infrastructure backend (API, database, Docker, etc).
TimeChart - An chart library specialized for large-scale time-series data, built on WebGL.
ungoogled-chromium - Google Chromium, sans integration with Google
network-weathermap-prometheus-datasource - attempt to add prometheus as datasource for network-weathermap
solid - Solid - Re-decentralizing the web (project directory)