[{"data":1,"prerenderedAt":324},["ShallowReactive",2],{"project-46530832":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":33,"aspects":34,"strip":44,"post_text":46,"what":47,"said":89,"maker_in_thread":195,"shape":204,"grid":208,"attempts":285,"same_week":286,"maker_shows":32,"maker_hidden":316,"reader_version":317,"card":318},"46530832","bikemap.nyc","I visualized the entire history of Citi Bike in the browser","title","Show HN: I visualized the entire history of Citi Bike in the browser","https:\u002F\u002Fbikemap.nyc\u002F","freemanjiang",1767812238,2026,113,31,599,4366,14,"notable","creative","data visualization","web_app",[23,24,25,20],"citi bike","bike share data","nyc bike rides","mixed",0.231,{"positive":29,"neutral":30,"mixed":31,"critical":32},8,9,0,3,20,{"execution":35,"performance":37,"design":38,"docs":40,"idea":41,"pricing":43},{"positive":31,"critical":36},2,{"positive":31,"critical":31},{"positive":39,"critical":31},4,{"positive":31,"critical":31},{"positive":42,"critical":42},1,{"positive":31,"critical":31},[32,42,32,31,45,32,31,31,31,31,32,45,45,45,45,31,32,32,32,45,42,32,31,45,32,42,31,31,31,31,45],5,"Each moving arrow represents one real bike ride out of 291 million, and if you've ever taken a Citi Bike before, you are included in this massive visualization!\n\nYou can search for your ride using Cmd + K and your Citi Bike receipt, which should give you the time of your ride and start\u002Fend station.\n\nEverything is open source: https:\u002F\u002Fgithub.com\u002Ffreemanjiang\u002Fbikemap\n\nSome technical details:\n- No backend! Processed data is stored in parquet files on a Cloudflare CDN, and queried directly by DuckDB WASM\n\n- deck.gl w\u002F Mapbox for GPU-accelerated rendering of thousands of concurrent animated bikes\n\n",{"problem":48,"audience":54,"pricing":55,"motivation":61,"time_to_build":54,"stack":65,"openness":86,"stage":87,"team_size":88},{"value":49,"source":50,"evidence":51},"Shows the history of Citi Bike trips as animated arrows on a map","maker",[52],{"id":53},"post",null,{"value":56,"source":50,"evidence":57},"Free to use; maker pays Mapbox costs for now",[58],{"id":59,"by":10,"text":60},"46534509","It definitely will if it blows up more. I'm willing to eat it for now because I think it's art that more people should see!",{"value":62,"source":50,"evidence":63},"Treats it as art that more people should see",[64],{"id":59,"by":10,"text":60},[66,70,74,78,82],{"value":67,"source":50,"evidence":68},"DuckDB WASM",[69],{"id":53},{"value":71,"source":50,"evidence":72},"deck.gl",[73],{"id":53},{"value":75,"source":50,"evidence":76},"Mapbox",[77],{"id":53},{"value":79,"source":50,"evidence":80},"OSRM",[81],{"id":53},{"value":83,"source":50,"evidence":84},"Parquet on Cloudflare CDN",[85],{"id":53},"open_source","launched","unknown",{"praise":90,"objections":118,"requests":148,"questions":163,"alternatives":182},[91,107],{"value":92,"source":93,"evidence":94},"Beautiful, charismatic visualization","commenter",[95,99,103],{"id":96,"by":97,"text":98},"46533534","IvoCrnkovic","I've seen many visualizations of the citibike data over the years, this is one of the most charismatic for sure!",{"id":100,"by":101,"text":102},"46534398","nadis","+1 to this comment! I used to work in this space and have similarly seen many projects and professional attempts at visualizing this kind of trip data. This is beautifully done!",{"id":104,"by":105,"text":106},"46545207","mattmm11","This is now top of my list as one of my favorite data visualizations I've ever seen. I remember spending some time with data for Capital Bikeshare data in DC, which was also…",{"value":108,"source":93,"evidence":109},"Nice work sharing the data",[110,114],{"id":111,"by":112,"text":113},"46533852","7777777phil","This is just so cool! Not much more to add. Thanks a lot for sharing!! Great work :)",{"id":115,"by":116,"text":117},"46536108","wxw","Awesome work!",[119,134,141],{"value":120,"source":93,"evidence":121},"Routes are shortest paths, so they are approximate, not real trip paths",[122,126,130],{"id":123,"by":124,"text":125},"46534584","chem83","Relevant callout from https:\u002F\u002Fbikemap.nyc\u002Fabout: * Limitations * The data only contains the start and end station for each trip, but does not contain the full path. Route…",{"id":127,"by":128,"text":129},"46537154","kyleee","Hmm, definitely too bad. Essentially fictional",{"id":131,"by":132,"text":133},"46534627","big_toast","non corrupted github link: https:\u002F\u002Fgithub.com\u002Ffreeman-jiang\u002Fbikemap.nyc Cool visualization. Do you find the OSRM shortest path routes probable for bikes? Not living in NYC, I…",{"value":135,"source":93,"evidence":136},"Bikes disappear and reappear elsewhere, so 'one ride per arrow' is misleading",[137],{"id":138,"by":139,"text":140},"46536632","netsharc","They show a bike at a location, if it's rented it will disappear off the map, if it's \"returned\" (available to hire again) it will show back up on the map, but at a different…",{"value":142,"source":93,"evidence":143},"Title says entire history but data starts in 2025",[144],{"id":145,"by":146,"text":147},"46537369","pimlottc","It says “entire history” but seems to start at Jan 1, 2025?",[149,156],{"value":150,"source":93,"evidence":151},"Match 'and' to '&' in station search",[152],{"id":153,"by":154,"text":155},"46536604","frakkingcylons","this is really nice. One request: when searching for a station name, let me type \"and\" instead of \"&\" e.g. typing \"E 47th St and 2 Ave\" would still return \"E 47th & 2 Ave\".",{"value":157,"source":93,"evidence":158},"Filter out very slow rides and report how many rides were excluded",[159],{"id":160,"by":161,"text":162},"46539218","jotaen","This limitation comes with more interesting implications: e.g., I noticed that some bike trips are noticeably slower than average. For those I’d assume that the rider either took…",[164,168,175],{"value":165,"source":93,"evidence":166},"Are OSRM shortest-path routes realistic for bikes?",[167],{"id":131,"by":132,"text":133},{"value":169,"source":93,"evidence":170},"Is MapLibre a cheaper alternative to Mapbox?",[171],{"id":172,"by":173,"text":174},"46536941","timeisapear","Is MapLibre GL a cheaper (free?) open source alternative? Cool stuff btw. I’m trying to visualize weather model data myself (millions of points) at https:\u002F\u002Ffutureradar.net and…",{"value":176,"source":93,"evidence":177},"How was the data gathered?",[178],{"id":179,"by":180,"text":181},"46533492","ge96","How was the data gathered? They just publicly show the bike's locations?",[183,187],{"value":184,"source":93,"evidence":185},"Capital Bikeshare data (DC)",[186],{"id":104,"by":105,"text":106},{"value":188,"source":93,"evidence":189},"Lyft\u002FBird micromobility data",[190,191],{"id":104,"by":105,"text":106},{"id":192,"by":193,"text":194},"46535426","rorylawless","This is awesome. I had no idea Lyft publishes ride data, time to explore the DC version!",{"comments":39,"answered":42,"key":196},[197,200,203],{"id":198,"text":199},"46544063","Yeah there is a filter between 1.2 and 20 mph",{"id":201,"text":202},"46534514","Thank you so much! That means a lot.",{"id":59,"text":60},{"commenters":205,"max_depth":39,"maker_replies":39,"first_comment_mins":206,"lifespan_hours":207},25,172,24,[209,211,213,215,217,219,223,227,231,234,237,238,241,243,244,245,247,248,251,254,257,259,264,265,267,268,270,275,278,281,284],[123,31,32,210,124,31],"project\u002Fneutral\u002Fexecution",[127,31,42,212,128,31],"project\u002Fcritical\u002Fexecution",[160,31,32,214,161,31],"project\u002Fneutral\u002Fperformance",[198,31,31,216,10,42],"maker\u002Fneutral\u002Fexecution",[104,42,45,218,105,31],"project\u002Fpositive\u002Fdesign",[220,36,32,221,222,31],"46536622","project\u002Fneutral\u002Fdocs","lazarus01",[224,32,31,225,226,31],"46535158","other\u002Fneutral\u002Fnone","jdlyga",[228,32,31,229,230,31],"46536114","commenter\u002Fneutral\u002Fnone","crazygringo",[232,39,31,225,233,31],"46533753","wiredfool",[235,39,31,225,236,31],"46535021","jeffbee",[131,45,32,210,132,31],[192,239,45,240,193,31],6,"project\u002Fpositive\u002Fnone",[111,242,45,240,112,31],7,[96,29,45,218,97,31],[100,29,45,218,101,31],[201,29,31,246,10,42],"maker\u002Fpositive\u002Fnone",[153,30,32,210,154,31],[179,249,32,250,180,31],10,"project\u002Fneutral\u002Fnone",[252,249,32,221,253,31],"46533528","RIMR",[255,249,45,256,180,31],"46533572","project\u002Fpositive\u002Fidea",[138,249,42,258,139,31],"project\u002Fcritical\u002Fidea",[260,261,32,262,263,31],"46534032",11,"project\u002Fneutral\u002Fpricing","leros",[59,261,31,262,10,42],[266,261,45,218,263,31],"46536665",[172,261,32,262,173,31],[145,269,42,212,146,31],12,[271,272,31,273,274,31],"46534206",13,"other\u002Fneutral\u002Fprivacy","gnfargbl",[276,272,31,277,10,42],"46534523","maker\u002Fneutral\u002Fprivacy",[279,272,31,280,236,31],"46535042","commenter\u002Fneutral\u002Fprivacy",[282,272,31,280,283,31],"46537094","tennysont",[115,17,45,240,116,31],[],[287,292,297,301,306,311],{"id":288,"name":289,"points":290,"category":291},"46454693","OpenWorkers",500,"infrastructure",{"id":293,"name":294,"points":295,"category":296},"46491749","taws",390,"dev_tools",{"id":298,"name":299,"points":300,"category":296},"46511469","Prism.Tools",380,{"id":302,"name":303,"points":304,"category":305},"46499646","DoNotNotify",347,"productivity",{"id":307,"name":308,"points":309,"category":310},"46488654","how browsers work",302,"learning_science",{"id":312,"name":313,"points":314,"category":315},"46501137","Tailsnitch",280,"security_privacy",false,"v2",{"id":319,"name":5,"line":6,"ai":316,"cat":19,"year":12,"points":13,"comments":14,"rec":26,"s":320,"top":17,"kw":321,"maker":10,"domain":5,"tier":18,"attempts":31,"strip":322,"url":9,"mix":323,"praise":92,"objection":120,"sub":20},46530832,0.23,[23,24,25,20],"3130530000355550333513053100005",[29,30,31,32],1794036689765]