[{"data":1,"prerenderedAt":243},["ShallowReactive",2],{"project-26301600":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":33,"aspects":34,"strip":43,"post_text":46,"what":47,"said":94,"maker_in_thread":161,"shape":171,"grid":173,"attempts":204,"same_week":205,"maker_shows":234,"maker_hidden":235,"reader_version":236,"card":237},"26301600","Hackernews-Button","Bloom Filter-based, private HN browsing extension","title","Show HN: Hackernews-Button – Bloom Filter-based, private HN browsing extension","https:\u002F\u002Fgithub.com\u002Fjstrieb\u002Fhackernews-button","github.com","jstrieb",1614596965,2021,74,15,671,2533,27,"notable","consumer_social","hacker news browser extension","browser_extension",[24,25,26,27],"bloom filter","hacker news","firefox extension","private browsing","loved",0.292,{"positive":31,"neutral":31,"mixed":32,"critical":32},4,0,8,{"design":35,"idea":37,"privacy":39,"docs":40,"execution":41,"performance":42},{"positive":36,"critical":32},1,{"positive":38,"critical":32},2,{"positive":32,"critical":32},{"positive":36,"critical":32},{"positive":32,"critical":32},{"positive":32,"critical":32},[32,44,32,45,32,44,32,45,32,44,32,45,32,45,44],5,3,null,{"problem":48,"audience":55,"pricing":46,"motivation":64,"time_to_build":46,"stack":68,"openness":91,"stage":92,"team_size":93},{"value":49,"source":50,"evidence":51},"Shows whether the current page was submitted to Hacker News without querying HN APIs on each visit","maker",[52],{"id":53,"by":11,"text":54},"26301632","Hello! This Firefox extension shows approximately how many points (if any) the current page scored on Hacker News using Bloom filters. Clicking the extension navigates to the…",{"value":56,"source":57,"evidence":58},"Hacker News readers using Firefox who want privacy","inferred",[59,60],{"id":53,"by":11,"text":54},{"id":61,"by":62,"text":63},"26307707","jacobobryant","I just installed it. I don't have much to add, but wanted to say: wow, this is awesome. I appreciated the How It Works section. I made a tiny open-source web app in a similar…",{"value":65,"source":50,"evidence":66},"Reading interesting old HN discussions and checking whether a page was already submitted",[67],{"id":53,"by":11,"text":54},[69,73,77,81,87],{"value":70,"source":50,"evidence":71},"C",[72],{"id":53,"by":11,"text":54},{"value":74,"source":50,"evidence":75},"WebAssembly",[76],{"id":53,"by":11,"text":54},{"value":78,"source":50,"evidence":79},"JavaScript",[80],{"id":53,"by":11,"text":54},{"value":82,"source":50,"evidence":83},"GitHub Actions",[84],{"id":85,"by":11,"text":86},"26309795","The extension retrieves a (few) Bloom filter(s). In case you're unfamiliar, Bloom filters are data structures approximately equivalent to condensed representations of all of the…",{"value":88,"source":50,"evidence":89},"Google BigQuery",[90],{"id":85,"by":11,"text":86},"open_source","launched","unknown",{"praise":95,"objections":114,"requests":128,"questions":136,"alternatives":152},[96,109],{"value":97,"source":98,"evidence":99},"Privacy-preserving design using Bloom filters","commenter",[100,101,105],{"id":61,"by":62,"text":63},{"id":102,"by":103,"text":104},"26310351","tosh","great bloom filter use case, thanks a lot for building and sharing this!",{"id":106,"by":107,"text":108},"26310127","gitgud","Thanks for clearing that up, yes I'm not that familiar with Bloom filters, seems like an interesting and useful concept. It could probably (pun intended) be applied to many…",{"value":110,"source":98,"evidence":111},"Readable code and documentation",[112,113],{"id":61,"by":62,"text":63},{"id":106,"by":107,"text":108},[115,121],{"value":116,"source":98,"evidence":117},"Local list may miss obscure sites with millions of posts",[118],{"id":119,"by":107,"text":120},"26309713","Nice, so it periodically retrieves a list of HN posts and queries that list locally, so you're not telling algolia any specific site details. There are millions of posts on HN,…",{"value":122,"source":98,"evidence":123},"False positive rate tradeoff",[124],{"id":125,"by":126,"text":127},"26309963","ska","Isn't this basically going to depend on the acceptable false positive rate?",[129],{"value":130,"source":98,"evidence":131},"Add a submit-page option for unlisted pages",[132],{"id":133,"by":134,"text":135},"26308134","stunt","Just add a feature to submit a page when it isn't listed. I wouldn't be using it, but it make sense to have that too.",[137,141,145],{"value":138,"source":98,"evidence":139},"How many submissions the filter covers",[140],{"id":119,"by":107,"text":120},{"value":142,"source":98,"evidence":143},"BigQuery cost of daily queries",[144],{"id":106,"by":107,"text":108},{"value":146,"source":98,"evidence":147},"Comparison with Merkle trees",[148],{"id":149,"by":150,"text":151},"26308526","sktrdie","Have you compared this with using Merkle Trees? Would be curious how big the size of a merkle branch is in comparison to the bloom filter set.",[153,157],{"value":154,"source":98,"evidence":155},"newsit extension that queries sources on every page load",[156],{"id":119,"by":107,"text":120},{"value":158,"source":98,"evidence":159},"Naive Algolia querying web app",[160],{"id":61,"by":62,"text":63},{"comments":162,"answered":31,"key":163},7,[164,165,168],{"id":53,"text":54},{"id":166,"text":167},"26307802","Thanks! Extensions are powerful and dangerous, so I wanted to do everything possible to make it easy to read the code for this one and understand how it works. I also really like…",{"id":169,"text":170},"26308313","This is a good idea, thanks! The only feature I haven't added but eventually plan to is a right-click context menu with a bunch of additional actions. For example \"search by page…",{"commenters":33,"max_depth":31,"maker_replies":162,"first_comment_mins":44,"lifespan_hours":172},13,[174,176,178,180,182,184,187,190,192,193,195,198,199,201,203],[53,32,32,175,11,36],"project\u002Fpositive\u002Fidea",[61,32,44,177,62,32],"project\u002Fpositive\u002Fdesign",[166,32,32,179,11,36],"maker\u002Fneutral\u002Fdocs",[133,32,45,181,134,32],"project\u002Fneutral\u002Fidea",[169,32,32,183,11,36],"maker\u002Fpositive\u002Fidea",[185,32,44,175,186,32],"26308439","ignoramous",[188,32,32,189,11,36],"26308711","project\u002Fneutral\u002Fexecution",[119,36,45,191,107,32],"project\u002Fneutral\u002Fprivacy",[85,36,32,189,11,36],[106,36,44,194,107,32],"maker\u002Fpositive\u002Fdocs",[196,36,32,197,11,36],"26310237","maker\u002Fneutral\u002Fpricing",[149,38,45,189,150,32],[200,38,32,189,11,36],"26308602",[125,38,45,202,126,32],"project\u002Fneutral\u002Fperformance",[102,45,44,175,103,32],[],[206,211,216,221,225,229],{"id":207,"name":208,"points":209,"category":210},"26271117","Redbean",1998,"infrastructure",{"id":212,"name":213,"points":214,"category":215},"26258773","GamestonkTerminal",1422,"finance_crypto",{"id":217,"name":218,"points":219,"category":220},"26260390","UTM",418,"dev_tools",{"id":222,"name":223,"points":224,"category":20},"26277602","Hummingbard",412,{"id":226,"name":227,"points":228,"category":220},"26295100","win3wm",327,{"id":230,"name":231,"points":232,"category":233},"26306478","Ten seconds to ponder if a thread is worth it",148,"productivity",9,false,"v2",{"id":238,"name":5,"line":6,"ai":235,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":239,"top":18,"kw":240,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":241,"url":9,"mix":242,"praise":97,"objection":116,"sub":21},26301600,0.29,[24,25,26,27],"050305030503035",[31,31,32,32],1793991024394]