[{"data":1,"prerenderedAt":459},["ShallowReactive",2],{"project-21207132":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":47,"what":48,"said":86,"maker_in_thread":208,"shape":220,"grid":223,"attempts":421,"same_week":422,"maker_shows":345,"maker_hidden":451,"reader_version":452,"card":453},"21207132","uPlot.js","An exceptionally fast, tiny time series chart","title","Show HN: uPlot.js – An exceptionally fast, tiny time series chart","https:\u002F\u002Fgithub.com\u002Fleeoniya\u002FuPlot","github.com","leeoniya",1570650215,2019,260,81,128,2195,6,"legend","data","charting library","library",[24,25,26,27],"time series chart","canvas charting","javascript chart library","fast chart","debated",-0.072,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,14,0,13,36,{"performance":37,"docs":40,"execution":42,"design":43,"idea":44},{"positive":38,"critical":39},3,1,{"positive":33,"critical":41},2,{"positive":33,"critical":18},{"positive":33,"critical":38},{"positive":41,"critical":33},[39,33,33,39,39,38,39,33,39,38,39,39,38,38,33,38,39,46,38,33,46,39,38,33,38,38,33,46,38,33,33,38,46,46,39,39,38,46,46,46],5,null,{"problem":49,"audience":47,"pricing":47,"motivation":60,"time_to_build":47,"stack":67,"openness":83,"stage":84,"team_size":85},{"value":50,"source":51,"evidence":52},"Rendering large time series charts quickly with a small library","maker",[53,56],{"id":54,"by":11,"text":55},"21207147","i figured this was far enough along in the dev cycle now to get some feedback. most charting libs try hard to do as much as possible; uPlot tries hard to do as little as…",{"id":57,"by":58,"text":59},"21212751","remon","After having a look at the code and the list of \"non-features\" (which is a rather opinionated list I might add) the \"exceptionally fast\" part primarily comes from it simply not…",{"value":61,"source":51,"evidence":62},"Maker wants a fast, minimal chart library and writes open source code primarily for themselves",[63,66],{"id":64,"by":11,"text":65},"21212154","honestly, i already maintain too many open source projects (and quickly resolve bug reports) to be worried about people not using more of my free work. i write open source code…",{"id":54,"by":11,"text":55},[68,76],{"value":69,"source":70,"evidence":71},"JavaScript","inferred",[72],{"id":73,"by":74,"text":75},"21212169","3dfan","Why is this needed in the codebase? ``` export const getFullYear = 'getFullYear'; export const getMonth = 'getMonth'; export const getDate = 'getDate'; export const getDay =…",{"value":77,"source":51,"evidence":78},"HTML5 Canvas",[79,80],{"id":54,"by":11,"text":55},{"id":81,"by":11,"text":82},"21217038","no, there is no breakthrough that i'm aware of. i took a raw canvas and a raw data structure of a single array per series, plus one for timestamps and made a loop to draw lines…","open_source","beta","solo",{"praise":87,"objections":104,"requests":133,"questions":162,"alternatives":177},[88,100],{"value":89,"source":90,"evidence":91},"Very fast rendering of large datasets","commenter",[92,96],{"id":93,"by":94,"text":95},"21209886","seanlaff","Awesome!! It's been disheartening to see flotjs (which was essentially unmaintained for 5 years) still beat out scores of other charting libraries in terms of raw speed. Over the…",{"id":97,"by":98,"text":99},"21211298","edf13","> it can create an interactive chart containing 150,000 data points in 50ms Very impressive in a world of over engineering and over designed charts!",{"value":101,"source":90,"evidence":102},"Small, lightweight library",[103],{"id":93,"by":94,"text":95},[105,109,119,126],{"value":106,"source":90,"evidence":107},"Benchmarks compare unlike feature sets (apples vs oranges)",[108],{"id":57,"by":58,"text":59},{"value":110,"source":90,"evidence":111},"Lacks error messages and input validation",[112,116],{"id":113,"by":114,"text":115},"21210313","gitgud","Under \"Non-features that won't be added\" it says > No validation of inputs or helpful error messages - study the examples, read the docs. I agree that validation is probably…",{"id":117,"by":114,"text":118},"21211512","> no one is paying me to write extra code (or any code, really) Fair enough, I understand the mentality, it's not easy developing and maintaining packages in your spare time...…",{"value":120,"source":90,"evidence":121},"Documentation is missing or not linked from readme",[122],{"id":123,"by":124,"text":125},"21212362","tiborsaas","> read the docs I would read them if they were linked from the readme :)",{"value":127,"source":90,"evidence":128},"Touch zoom does not work on mobile",[129],{"id":130,"by":131,"text":132},"21210843","xiphias2","Zooming on my mobile (Chrome) works for dygraphs, but not for uPlot.js. I tried the benchmark example and it doesn't zoom in for me. The other ,,example and API'' demo doesn't…",[134,144,151,158],{"value":135,"source":90,"evidence":136},"Synced crosshairs across multiple charts",[137,141],{"id":138,"by":139,"text":140},"21211268","sb8244","Would it be possible to have 2 charts with synced crosshairs on this? I have a little open-source application that grabs stats from Elixir nodes and its plotting library is…",{"id":142,"by":139,"text":143},"21211417","Nice, I'm looking forward to trying it out!",{"value":145,"source":90,"evidence":146},"Support for SVG output",[147],{"id":148,"by":149,"text":150},"21211804","NetOpWibby","Will you add SVG support?",{"value":152,"source":90,"evidence":153},"Candlestick (OHLC) series support",[154],{"id":155,"by":156,"text":157},"21216316","qwerty456127","Can it draw candlestick (OHLC) series?",{"value":159,"source":90,"evidence":160},"Streaming high frequency data support",[161],{"id":93,"by":94,"text":95},[163,170],{"value":164,"source":90,"evidence":165},"What mechanism makes it fast",[166],{"id":167,"by":168,"text":169},"21212827","dbranes","Can you state what's the mechanism that makes it fast? Is this a breakthrough in rendering optimizations or does it introduce smarter data structures? Or is it an accumulation of…",{"value":171,"source":90,"evidence":172},"How it compares to d3.js",[173],{"id":174,"by":175,"text":176},"21216406","catacombs","How does this compare to d3.js? I'm surprised to not see it included in the benchmark comparison table.",[178,187,194,198,204],{"value":179,"source":51,"evidence":180},"Flot",[181,184],{"id":182,"by":11,"text":183},"21210469","> Awesome!! It's been disheartening to see flotjs (which was essentially unmaintained for 5 years) still beat out scores of other charting libraries in terms of raw speed. i…",{"id":185,"by":11,"text":186},"21211448","i tested Flot [1] locally and got 351ms\u002F45MB heap vs 45ms\u002F20MB heap for uPlot on this machine. (the numbers in the readme are from another machine that's maybe 20% slower). i'll…",{"value":188,"source":90,"evidence":189},"Dygraphs",[190,191],{"id":130,"by":131,"text":132},{"id":192,"by":11,"text":193},"21215286","i had a prototype using https:\u002F\u002Fgithub.com\u002Fmourner\u002Fsimplify-js and it did a bit better in low quality\u002Flow precision mode, but worse in high quality mode. at some point the…",{"value":195,"source":90,"evidence":196},"Vega",[197],{"id":93,"by":94,"text":95},{"value":199,"source":51,"evidence":200},"ECharts",[201],{"id":202,"by":11,"text":203},"21219261","ECharts has been added.",{"value":205,"source":90,"evidence":206},"d3.js",[207],{"id":174,"by":175,"text":176},{"comments":209,"answered":32,"key":210},34,[211,214,217],{"id":212,"text":213},"21213579","from a perf perspective it's more like excluding the mirrors and windshield wipers. the amount of measuring [of label text] that might be required for this bench is absolutely…",{"id":215,"text":216},"21214520","> I was referring to your benchmark hitting exactly the functional scope of your library while it's invoking more generic libraries that by extension have to do more work for the…",{"id":218,"text":219},"21210347","certainly didn't mean it to come off that way. i might make a devmode version that has some of this in the far future. but it's not a priority before API stabilization, perf…",{"commenters":35,"max_depth":221,"maker_replies":209,"first_comment_mins":39,"lifespan_hours":222},8,72,[224,226,228,230,231,234,238,240,242,244,247,250,254,257,259,263,266,267,269,272,275,278,280,283,285,289,291,292,294,297,301,302,304,307,308,311,312,313,317,319,320,322,325,327,330,332,335,338,340,343,347,348,350,352,355,357,360,363,365,367,371,373,376,377,379,381,383,386,388,390,392,396,398,402,404,405,406,408,413,415,417],[57,33,39,225,58,33],"project\u002Fcritical\u002Fperformance",[212,33,33,227,11,39],"commenter\u002Fneutral\u002Fperformance",[229,33,33,227,58,33],"21214371",[215,33,33,227,11,39],[232,33,33,233,58,33],"21214773","commenter\u002Fpositive\u002Fexecution",[235,33,33,236,237,33],"21213990","other\u002Fneutral\u002Fnone","JNRowe",[113,39,39,239,114,33],"project\u002Fcritical\u002Fdocs",[218,39,33,241,11,39],"maker\u002Fneutral\u002Fdocs",[117,39,39,243,114,33],"project\u002Fcritical\u002Fexecution",[245,39,39,243,246,33],"21211588","ryannevius",[248,39,39,243,249,33],"21211962","_squared_",[251,39,46,252,253,33],"21211786","maker\u002Fpositive\u002Fnone","semi-extrinsic",[255,39,39,243,256,33],"21212108","solidasparagus",[64,39,33,258,11,39],"maker\u002Fneutral\u002Fnone",[260,39,33,261,262,33],"21212292","commenter\u002Fneutral\u002Fnone","journalctl",[264,39,33,265,11,39],"21212319","maker\u002Fneutral\u002Fexecution",[123,39,39,239,124,33],[268,39,33,241,11,39],"21212377",[270,39,38,271,124,33],"21212462","project\u002Fneutral\u002Fdocs",[273,39,33,274,11,39],"21212477","project\u002Fneutral\u002Fdesign",[276,39,39,277,124,33],"21212556","project\u002Fcritical\u002Fdesign",[54,41,33,279,11,39],"project\u002Fneutral\u002Fidea",[281,41,39,243,282,33],"21209769","thomas536",[284,41,33,258,11,39],"21210181",[286,41,38,287,288,33],"21211312","project\u002Fneutral\u002Fperformance","onion2k",[290,41,33,287,11,39],"21211375",[148,41,38,279,149,33],[293,41,33,287,11,39],"21211867",[295,41,33,296,149,33],"21214084","commenter\u002Fcritical\u002Fidea",[298,41,33,299,300,33],"21217904","commenter\u002Fcritical\u002Fperformance","amenod",[167,38,38,287,168,33],[303,38,33,287,11,39],"21213595",[305,38,39,306,168,33],"21216826","maker\u002Fcritical\u002Fnone",[81,38,33,287,11,39],[93,309,46,310,94,33],4,"project\u002Fpositive\u002Fperformance",[182,309,33,287,11,39],[185,309,33,310,11,39],[314,309,38,315,316,33],"21213928","project\u002Fneutral\u002Fnone","dkersten",[318,309,33,258,11,39],"21214190",[202,309,33,252,11,39],[321,309,46,252,316,33],"21222582",[323,309,38,279,324,33],"21214677","shusson",[326,309,33,258,11,39],"21216698",[328,46,39,277,329,33],"21211346","tastroder",[331,46,33,265,11,39],"21211381",[333,18,38,279,334,33],"21212416","OJFord",[336,18,33,236,337,33],"21212435","rejschaap",[339,18,33,236,11,39],"21212443",[341,18,33,236,342,33],"21212798","erinaceousjones",[344,345,38,287,346,33],"21215173",7,"1wheel",[192,345,33,287,11,39],[349,345,38,287,346,33],"21215469",[351,345,33,287,11,39],"21215984",[353,345,33,354,346,33],"21217304","commenter\u002Fpositive\u002Fperformance",[356,345,33,227,11,39],"21218089",[358,345,46,359,346,33],"21219868","maker\u002Fpositive\u002Fperformance",[361,345,33,362,11,39],"21220142","commenter\u002Fpositive\u002Fnone",[73,221,38,364,74,33],"project\u002Fneutral\u002Fexecution",[366,221,33,364,11,39],"21212196",[368,221,33,369,370,33],"21212234","commenter\u002Fneutral\u002Fexecution","pintxo",[372,221,33,227,11,39],"21212245",[374,221,33,227,375,33],"21212547","e12e",[138,31,38,279,139,33],[378,31,33,279,11,39],"21211299",[142,31,46,380,139,33],"project\u002Fpositive\u002Fidea",[382,31,33,279,11,39],"21235861",[384,31,46,380,385,33],"21211873","reacharavindh",[387,31,33,279,11,39],"21235857",[130,389,39,277,131,33],10,[391,389,33,274,11,39],"21210909",[393,394,39,243,395,33],"21212058",11,"mosselman",[397,394,33,364,11,39],"21212099",[399,400,38,279,401,33],"21211636",12,"calmconviction",[403,400,33,279,11,39],"21211655",[97,34,46,310,98,33],[174,32,38,315,175,33],[407,32,33,315,11,39],"21216482",[409,410,46,411,412,33],"21214429",15,"project\u002Fpositive\u002Fnone","edgarvaldes",[155,414,38,279,156,33],16,[416,414,33,279,11,39],"21216612",[418,419,46,252,420,33],"21211499",17,"superPorridge",[],[423,428,433,438,443,447],{"id":424,"name":425,"points":426,"category":427},"21175492","FeastGenius",422,"productivity",{"id":429,"name":430,"points":431,"category":432},"21157463","Imagededup",290,"dev_tools",{"id":434,"name":435,"points":436,"category":437},"21157066","Able",248,"web_saas",{"id":439,"name":440,"points":441,"category":442},"21147058","Scale Heaven",231,"creative",{"id":444,"name":445,"points":446,"category":427},"21179190","spotify-tui",212,{"id":448,"name":449,"points":450,"category":432},"21179037","Small Clojure Interpreter",143,false,"v2",{"id":454,"name":5,"line":6,"ai":451,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":455,"top":18,"kw":456,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":457,"url":9,"mix":458,"praise":89,"objection":106,"sub":21},21207132,-0.07,[24,25,26,27],"1001131013113303153051303305300355113555",[31,32,33,34],1794036581755]