{"exhaustive":{"nbHits":true,"typo":true},"exhaustiveNbHits":true,"exhaustiveTypo":true,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ericd"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"PadMapper (YC S10) is Joining Zumper"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.padmapper.com/2016/02/25/padmapper-is-joining-zumper/"}},"_tags":["story","author_ericd","story_11175829"],"author":"ericd","children":[11175903,11176570,11176629,11176989,11177255,11177292,11177397,11178584,11178815,11178832,11178947,11179015,11179502,11179630,11179755,11179801,11187296],"created_at":"2016-02-25T17:06:13Z","created_at_i":1456419973,"num_comments":66,"objectID":"11175829","points":133,"story_id":11175829,"title":"PadMapper (YC S10) is Joining Zumper","updated_at":"2024-09-19T22:55:00Z","url":"http://blog.padmapper.com/2016/02/25/padmapper-is-joining-zumper/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"hrwl"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zumper raises $46M more to take on Zillow and the rest with its rental platform"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://techcrunch.com/2018/09/18/zumper-raises-46m-more-to-take-on-zillow-and-the-rest-with-its-apartment-rental-platform/"}},"_tags":["story","author_hrwl","story_18017400"],"author":"hrwl","children":[18017498],"created_at":"2018-09-18T17:38:02Z","created_at_i":1537292282,"num_comments":1,"objectID":"18017400","points":19,"story_id":18017400,"title":"Zumper raises $46M more to take on Zillow and the rest with its rental platform","updated_at":"2024-09-20T03:01:50Z","url":"https://techcrunch.com/2018/09/18/zumper-raises-46m-more-to-take-on-zillow-and-the-rest-with-its-apartment-rental-platform/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sunnysoma"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"My thoughts on launching Zumper's one click rental app"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zumper.com/2014/09/zumper-rental-application-product-pain-patience/"}},"_tags":["story","author_sunnysoma","story_8264483"],"author":"sunnysoma","children":[8264530],"created_at":"2014-09-03T18:27:08Z","created_at_i":1409768828,"num_comments":1,"objectID":"8264483","points":12,"story_id":8264483,"story_text":"","title":"My thoughts on launching Zumper's one click rental app","updated_at":"2024-09-19T21:09:25Z","url":"http://blog.zumper.com/2014/09/zumper-rental-application-product-pain-patience/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"blueski"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Introducing Dora: Zumper's new rental search"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zumper.com/2015/02/introducing-dora-next-evolution-rental-search/"}},"_tags":["story","author_blueski","story_9006932"],"author":"blueski","children":[9007253],"created_at":"2015-02-05T23:39:46Z","created_at_i":1423179586,"num_comments":1,"objectID":"9006932","points":11,"story_id":9006932,"story_text":"","title":"Introducing Dora: Zumper's new rental search","updated_at":"2023-09-07T02:03:12Z","url":"http://blog.zumper.com/2015/02/introducing-dora-next-evolution-rental-search/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"inaherlihy"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"How I Hustled to Get the Perfect Startup Job: From Tradecraft to Zumper"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://medium.com/@inaherlihy/how-i-hussled-to-get-the-perfect-job-bd24e74188ae"}},"_tags":["story","author_inaherlihy","story_9109888"],"author":"inaherlihy","children":[9111740],"created_at":"2015-02-25T21:45:53Z","created_at_i":1424900753,"num_comments":1,"objectID":"9109888","points":9,"story_id":9109888,"story_text":"","title":"How I Hustled to Get the Perfect Startup Job: From Tradecraft to Zumper","updated_at":"2023-09-07T02:10:48Z","url":"https://medium.com/@inaherlihy/how-i-hussled-to-get-the-perfect-job-bd24e74188ae"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"realpundit"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zumper allows renters to apply for apartments in a Zapp"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://www.realpundit.com/home/2014/zumper-allows-renters-to-allow-for-apartments-in-a-zapp"}},"_tags":["story","author_realpundit","story_8259696"],"author":"realpundit","children":[8259787],"created_at":"2014-09-02T19:47:01Z","created_at_i":1409687221,"num_comments":1,"objectID":"8259696","points":3,"story_id":8259696,"story_text":"","title":"Zumper allows renters to apply for apartments in a Zapp","updated_at":"2023-09-06T22:18:14Z","url":"http://www.realpundit.com/home/2014/zumper-allows-renters-to-allow-for-apartments-in-a-zapp"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"4clicknet"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zumper's Perspective on How to Raise a Seed Round"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://techcrunch.com/2012/10/14/one-founders-perspective-on-how-to-raise-a-seed-round/"}},"_tags":["story","author_4clicknet","story_4659258"],"author":"4clicknet","created_at":"2012-10-16T11:32:22Z","created_at_i":1350387142,"num_comments":0,"objectID":"4659258","points":2,"story_id":4659258,"story_text":"","title":"Zumper's Perspective on How to Raise a Seed Round","updated_at":"2024-09-19T18:57:04Z","url":"http://techcrunch.com/2012/10/14/one-founders-perspective-on-how-to-raise-a-seed-round/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"blueski"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"How we relaunched Zumper on React"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zumper.com/blog/2018/12/relaunching-zumper-on-react/"}},"_tags":["story","author_blueski","story_18731067"],"author":"blueski","created_at":"2018-12-21T02:37:15Z","created_at_i":1545359835,"num_comments":0,"objectID":"18731067","points":2,"story_id":18731067,"title":"How we relaunched Zumper on React","updated_at":"2024-09-20T03:28:47Z","url":"https://www.zumper.com/blog/2018/12/relaunching-zumper-on-react/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"janober"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zumper Select wants to make renting an apartment as easy as booking a hotel"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://techcrunch.com/2017/08/03/zumper-select-wants-to-make-renting-an-apartment-as-easy-as-booking-a-hotel"}},"_tags":["story","author_janober","story_14921425"],"author":"janober","created_at":"2017-08-03T17:06:07Z","created_at_i":1501779967,"num_comments":0,"objectID":"14921425","points":2,"story_id":14921425,"title":"Zumper Select wants to make renting an apartment as easy as booking a hotel","updated_at":"2024-09-20T01:07:22Z","url":"https://techcrunch.com/2017/08/03/zumper-select-wants-to-make-renting-an-apartment-as-easy-as-booking-a-hotel"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ipince"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zumper Goes National And Releases An iPhone App"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://techcrunch.com/2013/08/15/zumper-goes-national-and-releases-consumer-facing-iphone-app-to-help-you-find-your-next-apartment/"}},"_tags":["story","author_ipince","story_6221158"],"author":"ipince","created_at":"2013-08-15T23:05:32Z","created_at_i":1376607932,"num_comments":0,"objectID":"6221158","points":1,"story_id":6221158,"story_text":"","title":"Zumper Goes National And Releases An iPhone App","updated_at":"2023-09-06T21:58:51Z","url":"http://techcrunch.com/2013/08/15/zumper-goes-national-and-releases-consumer-facing-iphone-app-to-help-you-find-your-next-apartment/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"saurabhpalan"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Disrupt Battlefield Finalist Zumper Reveals It Raised $1M Seed Round "},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://techcrunch.com/2012/09/27/zumper-seed-round-1m/"}},"_tags":["story","author_saurabhpalan","story_4579686"],"author":"saurabhpalan","created_at":"2012-09-27T07:04:46Z","created_at_i":1348729486,"num_comments":0,"objectID":"4579686","points":1,"story_id":4579686,"title":"Disrupt Battlefield Finalist Zumper Reveals It Raised $1M Seed Round ","updated_at":"2024-09-19T18:59:26Z","url":"http://techcrunch.com/2012/09/27/zumper-seed-round-1m/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jwallaceparker"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Forget Craigslist, Zumper Will Find Your Next Apartment In NYC Or San Francisco"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://techcrunch.com/2012/09/11/zumper-disrupt12/"}},"_tags":["story","author_jwallaceparker","story_4508028"],"author":"jwallaceparker","created_at":"2012-09-11T22:13:10Z","created_at_i":1347401590,"num_comments":0,"objectID":"4508028","points":1,"story_id":4508028,"title":"Forget Craigslist, Zumper Will Find Your Next Apartment In NYC Or San Francisco","updated_at":"2024-09-19T18:52:05Z","url":"http://techcrunch.com/2012/09/11/zumper-disrupt12/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"abouelatta"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"How did the startup Zumper solve marketplace liquidity when it started?"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://first1000.substack.com/p/zumper"}},"_tags":["story","author_abouelatta","story_23741006"],"author":"abouelatta","created_at":"2020-07-05T19:01:17Z","created_at_i":1593975677,"num_comments":0,"objectID":"23741006","points":1,"story_id":23741006,"title":"How did the startup Zumper solve marketplace liquidity when it started?","updated_at":"2024-09-20T06:33:26Z","url":"https://first1000.substack.com/p/zumper"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"rawrjustin"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Designing the Zumper app for the Apple TV"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zumper.com/blog/2015/11/how-we-designed-our-app-for-tvos/"}},"_tags":["story","author_rawrjustin","story_10515560"],"author":"rawrjustin","created_at":"2015-11-05T19:22:15Z","created_at_i":1446751335,"num_comments":0,"objectID":"10515560","points":1,"story_id":10515560,"title":"Designing the Zumper app for the Apple TV","updated_at":"2024-09-19T22:27:47Z","url":"https://www.zumper.com/blog/2015/11/how-we-designed-our-app-for-tvos/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"undefined1"},"title":{"matchLevel":"none","matchedWords":[],"value":"San Francisco apartment rent prices are dropping fast"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.cnbc.com/2020/07/01/san-francisco-one-bedroom-rent-price-drops-11point8percent-in-june-zumper.html"}},"_tags":["story","author_undefined1","story_23705741"],"author":"undefined1","children":[23706148,23706161,23706213,23706226,23706255,23706257,23706268,23706302,23706305,23706312,23706316,23706330,23706359,23706393,23706396,23706514,23706556,23706568,23706578,23706671,23706681,23706881,23706905,23707008,23707053,23707174,23707197,23707272,23707336,23707370,23707426,23707520,23707746,23707914,23708457,23708541,23708572,23708586,23708643,23709207,23710686],"created_at":"2020-07-01T19:52:23Z","created_at_i":1593633143,"num_comments":399,"objectID":"23705741","points":280,"story_id":23705741,"title":"San Francisco apartment rent prices are dropping fast","updated_at":"2024-09-20T06:29:42Z","url":"https://www.cnbc.com/2020/07/01/san-francisco-one-bedroom-rent-price-drops-11point8percent-in-june-zumper.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"blueski"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"Raising Our $6.5m Series A \u2013 Lessons Learned"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zumper.com/2014/04/raising-a-series-a-amid-the-crunch/"}},"_tags":["story","author_blueski","story_7599742"],"author":"blueski","children":[7600453,7600869,7601433,7601503],"created_at":"2014-04-16T18:54:05Z","created_at_i":1397674445,"num_comments":5,"objectID":"7599742","points":48,"story_id":7599742,"story_text":"","title":"Raising Our $6.5m Series A \u2013 Lessons Learned","updated_at":"2024-09-19T20:49:57Z","url":"http://blog.zumper.com/2014/04/raising-a-series-a-amid-the-crunch/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dbg067"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"Hiring for startups: You're doing it wrong"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zumper.com/2014/04/kissing-goodbye-to-the-ohare-test/"}},"_tags":["story","author_dbg067","story_7721780"],"author":"dbg067","children":[7722204,7722244,7722272,7722432,7722465,7722467,7722506],"created_at":"2014-05-09T16:38:20Z","created_at_i":1399653500,"num_comments":17,"objectID":"7721780","points":42,"story_id":7721780,"story_text":"","title":"Hiring for startups: You're doing it wrong","updated_at":"2024-09-19T20:43:24Z","url":"http://blog.zumper.com/2014/04/kissing-goodbye-to-the-ohare-test/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dbg067"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"Rent prices across the US: SF tops list with new record high"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zumper.com/blog/2015/06/zumper-national-rent-report-june-2015/"}},"_tags":["story","author_dbg067","story_9642334"],"author":"dbg067","children":[9642430,9642458,9642537],"created_at":"2015-06-01T21:36:03Z","created_at_i":1433194563,"num_comments":4,"objectID":"9642334","points":25,"story_id":9642334,"story_text":"","title":"Rent prices across the US: SF tops list with new record high","updated_at":"2023-09-07T02:52:46Z","url":"https://www.zumper.com/blog/2015/06/zumper-national-rent-report-june-2015/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dbg067"},"title":{"matchLevel":"none","matchedWords":[],"value":"San Francisco rents increased by 13.5% in 2014"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zumper.com/2014/12/san-francisco-apartment-rents-rose-by-13-5-in-2014/"}},"_tags":["story","author_dbg067","story_8725273"],"author":"dbg067","children":[8725308,8725551,8725573,8725608,8725631,8725661,8725698,8725746,8725782,8725879,8726398,8726577,8727330],"created_at":"2014-12-09T19:59:08Z","created_at_i":1418155148,"num_comments":39,"objectID":"8725273","points":23,"story_id":8725273,"title":"San Francisco rents increased by 13.5% in 2014","updated_at":"2023-09-06T23:01:02Z","url":"http://blog.zumper.com/2014/12/san-francisco-apartment-rents-rose-by-13-5-in-2014/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dbg067"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"matchLevel":"none","matchedWords":[],"value":"The best time to search for an apartment"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zumper.com/2015/01/when-is-the-best-time-to-search-for-an-apartment/"}},"_tags":["story","author_dbg067","story_8858662"],"author":"dbg067","children":[8879279],"created_at":"2015-01-08T20:16:42Z","created_at_i":1420748202,"num_comments":0,"objectID":"8858662","points":11,"story_id":8858662,"story_text":"","title":"The best time to search for an apartment","updated_at":"2023-09-06T23:13:50Z","url":"http://blog.zumper.com/2015/01/when-is-the-best-time-to-search-for-an-apartment/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"spking"},"title":{"matchLevel":"none","matchedWords":[],"value":"Median 1-Bedroom Rent in San Francisco Soars to Nearly $3,700 a Month"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://sanfrancisco.cbslocal.com/2019/03/05/median-1-bedroom-rent-sf-3690-month-zumper/"}},"_tags":["story","author_spking","story_19314790"],"author":"spking","children":[19322428],"created_at":"2019-03-05T22:18:28Z","created_at_i":1551824308,"num_comments":1,"objectID":"19314790","points":8,"story_id":19314790,"title":"Median 1-Bedroom Rent in San Francisco Soars to Nearly $3,700 a Month","updated_at":"2024-09-20T03:49:06Z","url":"https://sanfrancisco.cbslocal.com/2019/03/05/median-1-bedroom-rent-sf-3690-month-zumper/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"blueski"},"title":{"matchLevel":"none","matchedWords":[],"value":"You\u2019re right to slow down your hiring (but not for the reason you think)"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zumper.com/blog/2016/07/youre-right-to-slow-down-your-hiring-but-not-for-the-reason-you-think-2/"}},"_tags":["story","author_blueski","story_12182487"],"author":"blueski","created_at":"2016-07-28T19:20:09Z","created_at_i":1469733609,"num_comments":0,"objectID":"12182487","points":8,"story_id":12182487,"title":"You\u2019re right to slow down your hiring (but not for the reason you think)","updated_at":"2024-09-19T23:33:19Z","url":"https://www.zumper.com/blog/2016/07/youre-right-to-slow-down-your-hiring-but-not-for-the-reason-you-think-2/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"andlarry"},"title":{"matchLevel":"none","matchedWords":[],"value":"Generating an EC2 client library using go/ast"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://go-talks.appspot.com/github.com/zumper/aws/slide/aws.slide"}},"_tags":["story","author_andlarry","story_7652631"],"author":"andlarry","created_at":"2014-04-26T20:20:43Z","created_at_i":1398543643,"num_comments":0,"objectID":"7652631","points":4,"story_id":7652631,"title":"Generating an EC2 client library using go/ast","updated_at":"2024-09-19T20:45:52Z","url":"http://go-talks.appspot.com/github.com/zumper/aws/slide/aws.slide"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sinak"},"title":{"matchLevel":"none","matchedWords":[],"value":"Are Venture Capitalists Raising Your Rent?"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zumper.com/blog/2015/09/are-venture-capitalists-raising-your-rent/"}},"_tags":["story","author_sinak","story_10255964"],"author":"sinak","created_at":"2015-09-22T00:20:42Z","created_at_i":1442881242,"num_comments":0,"objectID":"10255964","points":4,"story_id":10255964,"title":"Are Venture Capitalists Raising Your Rent?","updated_at":"2024-09-19T22:21:11Z","url":"https://www.zumper.com/blog/2015/09/are-venture-capitalists-raising-your-rent/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"confiscate"},"title":{"matchLevel":"none","matchedWords":[],"value":"One-Third of San Francisco\u2019s Rent Is Attributable to VC Funding"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://techcrunch.com/2015/09/21/zumper-rent/"}},"_tags":["story","author_confiscate","story_10257316"],"author":"confiscate","created_at":"2015-09-22T08:18:36Z","created_at_i":1442909916,"num_comments":0,"objectID":"10257316","points":2,"story_id":10257316,"title":"One-Third of San Francisco\u2019s Rent Is Attributable to VC Funding","updated_at":"2024-09-19T22:21:25Z","url":"http://techcrunch.com/2015/09/21/zumper-rent/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"smnrchrds"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Announcing something new: Zumero"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://www.ericsink.com/entries/announcing_zumero.html"}},"_tags":["story","author_smnrchrds","story_5376280"],"author":"smnrchrds","created_at":"2013-03-14T17:15:07Z","created_at_i":1363281307,"num_comments":0,"objectID":"5376280","points":11,"story_id":5376280,"story_text":"","title":"Announcing something new: Zumero","updated_at":"2024-09-19T19:23:51Z","url":"http://www.ericsink.com/entries/announcing_zumero.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"mukyu"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zimperium ZLabs Raising the Volume: New Vulnerability Processing MP3/MP4 Media"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://blog.zimperium.com/zimperium-zlabs-is-raising-the-volume-new-vulnerability-processing-mp3mp4-media/"}},"_tags":["story","author_mukyu","story_10311457"],"author":"mukyu","created_at":"2015-10-01T14:43:33Z","created_at_i":1443710613,"num_comments":0,"objectID":"10311457","points":5,"story_id":10311457,"title":"Zimperium ZLabs Raising the Volume: New Vulnerability Processing MP3/MP4 Media","updated_at":"2024-09-19T22:19:33Z","url":"https://blog.zimperium.com/zimperium-zlabs-is-raising-the-volume-new-vulnerability-processing-mp3mp4-media/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"eugenv"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Show HN: Zuperlist \u2013 An RSS News Reader that prioritizes topics you care about"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zuperlist.com/"}},"_tags":["story","author_eugenv","story_15499785","show_hn"],"author":"eugenv","children":[15499790],"created_at":"2017-10-18T15:16:03Z","created_at_i":1508339763,"num_comments":1,"objectID":"15499785","points":3,"story_id":15499785,"title":"Show HN: Zuperlist \u2013 An RSS News Reader that prioritizes topics you care about","updated_at":"2024-09-20T01:34:43Z","url":"https://www.zuperlist.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"001sky"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Louis Zamperini - obituary"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://www.telegraph.co.uk/news/obituaries/10942801/Louis-Zamperini-obituary.html"}},"_tags":["story","author_001sky","story_7983188"],"author":"001sky","created_at":"2014-07-03T14:21:38Z","created_at_i":1404397298,"num_comments":0,"objectID":"7983188","points":2,"story_id":7983188,"story_text":"","title":"Louis Zamperini - obituary","updated_at":"2024-09-19T21:00:02Z","url":"http://www.telegraph.co.uk/news/obituaries/10942801/Louis-Zamperini-obituary.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"KilledByAPixel"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"ZzFX \u2013 Zuper Zmall Zound Zynth \u2013 A Tiny JavaScript Sound Effect Engine"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/KilledByAPixel/ZzFX"}},"_tags":["story","author_KilledByAPixel","story_23056525"],"author":"KilledByAPixel","created_at":"2020-05-03T02:48:30Z","created_at_i":1588474110,"num_comments":0,"objectID":"23056525","points":2,"story_id":23056525,"title":"ZzFX \u2013 Zuper Zmall Zound Zynth \u2013 A Tiny JavaScript Sound Effect Engine","updated_at":"2024-09-20T06:05:33Z","url":"https://github.com/KilledByAPixel/ZzFX"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gregmac"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zuper Zmall Zound Zynth (JavaScript Sound Generator)"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://zzfx.3d2k.com/"}},"_tags":["story","author_gregmac","story_23054327"],"author":"gregmac","created_at":"2020-05-02T19:41:11Z","created_at_i":1588448471,"num_comments":0,"objectID":"23054327","points":2,"story_id":23054327,"title":"Zuper Zmall Zound Zynth (JavaScript Sound Generator)","updated_at":"2024-09-20T06:05:22Z","url":"https://zzfx.3d2k.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"fancyfish"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"NYC Cyber Command Releases Mobile App Developed by Zimperium"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://secure.nyc/"}},"_tags":["story","author_fancyfish","story_18243281"],"author":"fancyfish","created_at":"2018-10-17T20:11:44Z","created_at_i":1539807104,"num_comments":0,"objectID":"18243281","points":2,"story_id":18243281,"title":"NYC Cyber Command Releases Mobile App Developed by Zimperium","updated_at":"2024-09-20T03:10:24Z","url":"https://secure.nyc/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"superchink"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"DoubleDirect \u2013 Zimperium Discovers Full-Duplex ICMP Redirect Attacks in the Wild"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zimperium.com/doubledirect-zimperium-discovers-full-duplex-icmp-redirect-attacks-in-the-wild/"}},"_tags":["story","author_superchink","story_8684217"],"author":"superchink","created_at":"2014-12-01T22:06:12Z","created_at_i":1417471572,"num_comments":0,"objectID":"8684217","points":1,"story_id":8684217,"title":"DoubleDirect \u2013 Zimperium Discovers Full-Duplex ICMP Redirect Attacks in the Wild","updated_at":"2023-09-06T22:57:00Z","url":"http://blog.zimperium.com/doubledirect-zimperium-discovers-full-duplex-icmp-redirect-attacks-in-the-wild/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"evilsocket"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"DSploit merges with ZImperium zANTI2"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://www.dsploit.net/"}},"_tags":["story","author_evilsocket","story_8551515"],"author":"evilsocket","created_at":"2014-11-03T16:11:43Z","created_at_i":1415031103,"num_comments":0,"objectID":"8551515","points":1,"story_id":8551515,"story_text":"","title":"DSploit merges with ZImperium zANTI2","updated_at":"2024-09-19T21:17:50Z","url":"http://www.dsploit.net/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tesmar2"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Louis Zamperini, inspiration for 'Unbroken,' dead at 97"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://www.chicagotribune.com/entertainment/chi-louis-zamperini-dead-20140703,0,6058173.story"}},"_tags":["story","author_tesmar2","story_7984820"],"author":"tesmar2","created_at":"2014-07-03T18:34:07Z","created_at_i":1404412447,"num_comments":0,"objectID":"7984820","points":1,"story_id":7984820,"title":"Louis Zamperini, inspiration for 'Unbroken,' dead at 97","updated_at":"2026-03-24T05:50:53Z","url":"http://www.chicagotribune.com/entertainment/chi-louis-zamperini-dead-20140703,0,6058173.story"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"RyanZAG"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Zimperium Raises $8M For Mobile Security That Turns The Tables On Attackers"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://techcrunch.com/2013/12/20/zimperium-raises-8m-for-mobile-security-that-turns-the-tables-on-attackers/"}},"_tags":["story","author_RyanZAG","story_6946023"],"author":"RyanZAG","created_at":"2013-12-21T06:52:06Z","created_at_i":1387608726,"num_comments":0,"objectID":"6946023","points":1,"story_id":6946023,"story_text":"","title":"Zimperium Raises $8M For Mobile Security That Turns The Tables On Attackers","updated_at":"2023-09-06T22:57:00Z","url":"http://techcrunch.com/2013/12/20/zimperium-raises-8m-for-mobile-security-that-turns-the-tables-on-attackers/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jenny8lee"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Getting zumped on Zoom in era of social distancing"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.theguardian.com/lifeandstyle/shortcuts/2020/apr/13/zumping-the-rise-of-zoom-breakups"}},"_tags":["story","author_jenny8lee","story_22863477"],"author":"jenny8lee","created_at":"2020-04-14T07:22:13Z","created_at_i":1586848933,"num_comments":0,"objectID":"22863477","points":1,"story_id":22863477,"title":"Getting zumped on Zoom in era of social distancing","updated_at":"2024-09-20T06:03:28Z","url":"https://www.theguardian.com/lifeandstyle/shortcuts/2020/apr/13/zumping-the-rise-of-zoom-breakups"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox6"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"There are essentially two established ways to use zooming in web interfaces today. They serve different purposes and make different tradeoffs. I built a third one, so I'll try to be fair about what each does well and where it falls short.

* Prezi\nPrezi pioneered the zooming canvas for presentations and remains the market leader in that space. It recently added AI-powered generation and text editing tools. It's a polished product with real traction.

But Prezi is a closed platform, not a library. You can't use its zoom engine in your own app. Pricing starts at $15/month for meaningful features, and exporting to PowerPoint flattens all zoom effects into static slides. A recurring complaint from users is that the zooming and panning transitions cause motion sickness. And fundamentally, Prezi uses zoom as a storytelling device between pre-arranged frames. It's not a navigation model. It's a presentation model.

* impress.js\nimpress.js brought Prezi-like zooming to the open web. It's a presentation framework based on CSS3 transforms and transitions, directly inspired by Prezi. It was genuinely groundbreaking when it launched.\nIts architecture is step-based: you position "steps" in 3D space and the camera moves between them. That's great for presentations, but it doesn't help you build an app where users navigate by zooming into content. impress.js has no concept of dynamically mounting views, managing zoom depth, or handling navigation state. It's a slide deck engine with a zoom trick.

* Zumly\nThis is what I built. Full disclosure: I'm the sole developer.\nThe idea is offering an alternative to traditional page navigation using zooming. You mark an element as zoomable, point it to a view, and Zumly handles the transition and inserts new views. That's basically it.

I started Zumly in 2020 after leaving behind Zircle UI (a Vue zooming library), trying to take what I learned further. Framework-agnostic, focused just on the zoom part. Since then I've rewritten the engine several times, changed the approach more than once. Only now I'm actually happy with how it feels.

Views are dynamically mounted and unmounted during zoom transitions. In impress.js, all steps exist in the DOM simultaneously. In Zumly, you zoom into a trigger element, and the target view gets injected and scaled into place. This is closer to how routing works in SPAs than to how slide decks work.

The landing page is built with Zumly itself so you can get the feel before touching any code.

Curious if anyone else has thought about this space. What makes zooming UIs work or fail?

Landing page (built with Zumly): https://zumerlab.github.io/zumly

GitHub: https://github.com/zumerlab/zumly"},"title":{"matchLevel":"none","matchedWords":[],"value":"Zooming UIs in 2026: Prezi, impress.js, and why I built something different"}},"_tags":["story","author_tinchox6","story_47665194","ask_hn"],"author":"tinchox6","children":[47665786,47665845,47665972,47666012,47666069,47666141,47666237,47666296,47666476,47666494,47666636,47666669,47667175,47667264,47667368,47667763,47667931,47668353,47668983,47669094,47669128,47669268,47670158,47672750,47693300,47727620,47766833],"created_at":"2026-04-06T18:53:15Z","created_at_i":1775501595,"num_comments":44,"objectID":"47665194","points":101,"story_id":47665194,"story_text":"There are essentially two established ways to use zooming in web interfaces today. They serve different purposes and make different tradeoffs. I built a third one, so I'll try to be fair about what each does well and where it falls short.

* Prezi\nPrezi pioneered the zooming canvas for presentations and remains the market leader in that space. It recently added AI-powered generation and text editing tools. It's a polished product with real traction.

But Prezi is a closed platform, not a library. You can't use its zoom engine in your own app. Pricing starts at $15/month for meaningful features, and exporting to PowerPoint flattens all zoom effects into static slides. A recurring complaint from users is that the zooming and panning transitions cause motion sickness. And fundamentally, Prezi uses zoom as a storytelling device between pre-arranged frames. It's not a navigation model. It's a presentation model.

* impress.js\nimpress.js brought Prezi-like zooming to the open web. It's a presentation framework based on CSS3 transforms and transitions, directly inspired by Prezi. It was genuinely groundbreaking when it launched.\nIts architecture is step-based: you position "steps" in 3D space and the camera moves between them. That's great for presentations, but it doesn't help you build an app where users navigate by zooming into content. impress.js has no concept of dynamically mounting views, managing zoom depth, or handling navigation state. It's a slide deck engine with a zoom trick.

* Zumly\nThis is what I built. Full disclosure: I'm the sole developer.\nThe idea is offering an alternative to traditional page navigation using zooming. You mark an element as zoomable, point it to a view, and Zumly handles the transition and inserts new views. That's basically it.

I started Zumly in 2020 after leaving behind Zircle UI (a Vue zooming library), trying to take what I learned further. Framework-agnostic, focused just on the zoom part. Since then I've rewritten the engine several times, changed the approach more than once. Only now I'm actually happy with how it feels.

Views are dynamically mounted and unmounted during zoom transitions. In impress.js, all steps exist in the DOM simultaneously. In Zumly, you zoom into a trigger element, and the target view gets injected and scaled into place. This is closer to how routing works in SPAs than to how slide decks work.

The landing page is built with Zumly itself so you can get the feel before touching any code.

Curious if anyone else has thought about this space. What makes zooming UIs work or fail?

Landing page (built with Zumly): https://zumerlab.github.io/zumly

GitHub: https://github.com/zumerlab/zumly","title":"Zooming UIs in 2026: Prezi, impress.js, and why I built something different","updated_at":"2026-07-22T03:26:43Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox6"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Lately, I\u2019ve been working on a small side project: a web tool for creating radial and circular layouts using CSS only. What I\u2019ve enjoyed the most is that it\u2019s completely non-AI\u2014just code, logic, and design decisions made by hand.

I have nothing against AI, but I found that building something without it has been almost therapeutic. Of course I know it is just a side project. I mean I'm not depend on its success for living.

It also made me wonder: in a world where AI is taking over so many creative and technical tasks, is there still a place for the joy of purely handcrafted software? Have others here felt something similar when working on non-AI projects?

Side project url \nhttps://github.com/zumerlab/orbit/"},"title":{"matchLevel":"none","matchedWords":[],"value":"Ask HN: Building a Non-AI tool feels surprisingly refreshing for me"}},"_tags":["story","author_tinchox6","story_43470309","ask_hn"],"author":"tinchox6","children":[43470596,43472693],"created_at":"2025-03-25T12:16:23Z","created_at_i":1742904983,"num_comments":3,"objectID":"43470309","points":7,"story_id":43470309,"story_text":"Lately, I\u2019ve been working on a small side project: a web tool for creating radial and circular layouts using CSS only. What I\u2019ve enjoyed the most is that it\u2019s completely non-AI\u2014just code, logic, and design decisions made by hand.

I have nothing against AI, but I found that building something without it has been almost therapeutic. Of course I know it is just a side project. I mean I'm not depend on its success for living.

It also made me wonder: in a world where AI is taking over so many creative and technical tasks, is there still a place for the joy of purely handcrafted software? Have others here felt something similar when working on non-AI projects?

Side project url \nhttps://github.com/zumerlab/orbit/","title":"Ask HN: Building a Non-AI tool feels surprisingly refreshing for me","updated_at":"2025-03-31T19:01:54Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox6"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Orbit CSS reached its V.1.0.0 and it is finally stable. Hope you find it useful and easy to use.

In the doc site (https://zumerlab.github.io/orbit-docs/) you can play with a multilevel piemenu, and explore potencial use cases covered in examples:

- Progress bars

- Charts (e.g., pie charts, multi-level pies, sunburst charts)

- Gauges

- Knobs

- Pie menus

- Watch faces

- Sci-fi art

- Chemical structures

- Calendars

- Dashboards

- Mandalas"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Orbit Composer \u2013 a CSS tool for creating any kind of circular interface"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://github.com/zumerlab/orbit"}},"_tags":["story","author_tinchox6","story_42573913","show_hn"],"author":"tinchox6","children":[42574694],"created_at":"2025-01-02T12:38:51Z","created_at_i":1735821531,"num_comments":2,"objectID":"42573913","points":6,"story_id":42573913,"story_text":"Orbit CSS reached its V.1.0.0 and it is finally stable. Hope you find it useful and easy to use.

In the doc site (https://zumerlab.github.io/orbit-docs/) you can play with a multilevel piemenu, and explore potencial use cases covered in examples:

- Progress bars

- Charts (e.g., pie charts, multi-level pies, sunburst charts)

- Gauges

- Knobs

- Pie menus

- Watch faces

- Sci-fi art

- Chemical structures

- Calendars

- Dashboards

- Mandalas","title":"Show HN: Orbit Composer \u2013 a CSS tool for creating any kind of circular interface","updated_at":"2025-01-02T16:02:57Z","url":"https://github.com/zumerlab/orbit"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox5"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Recently, I made public a CSS framework I developed for creating radial designs. During development, I faced several challenges, including testing different features. I noticed that CSS linters and other tools didn't allow me to see why something wasn't working, even if there were no basic errors. Another typical CSS problem was seeing how it was shared across different browsers. Fortunately, I discovered that certain new CSS features can be used to create a series of real-time tests. These features are `@support`, `@container`, and `:has()`.

By combining these features, I developed a testing system not only to check if the framework works in the browser but also, and most importantly, to see if we are applying HTML correctly according to the browser's requirements and avoiding involuntary errors when developing an application.

Since my CSS framework necessarily uses features that only the newest browsers have, such as trigonometric functions like `cos()` and `sin()`, I created a series of rules to test if they are supported by the browser. If they're not, a message appears asking to update the browser. Similarly, if the browser doesn't support `:has()`, which is used throughout the framework.

There are also typical cases of browser incompatibility, so in some non-critical cases, I use `@support` or `@container` to hide certain Orbit features that don't affect its use. For example, Safari doesn't accept SVG `context-stroke`, so I hide them.

However, beyond those critical checks and compatibility, the most common issue when using a CSS framework is not knowing how to use it properly. That's why I created other CSS rules that allow analyzing if a parent element has the required child elements and not others. Here, visual alerts also appear while developing to give a hint about where the error is in the code.

I don't want to bore you with the details specific to Orbit, but I'll leave you the link to the support source and related documentation.

Repo:\nhttps://github.com/zumerlab/orbit

Source file:\nhttps://github.com/zumerlab/orbit/blob/main/src/scss/_support.scss

Orbit related documentation: \nhttps://zumerlab.github.io/orbit-docs/tools/support/

Good to go deeper:\nhttps://heydonworks.com/article/testing-html-with-modern-css

edited: typo Suorce -> Source"},"title":{"matchLevel":"none","matchedWords":[],"value":"A practical way to test HTML and CSS in real-time using only CSS"}},"_tags":["story","author_tinchox5","story_41378981","ask_hn"],"author":"tinchox5","created_at":"2024-08-28T12:59:21Z","created_at_i":1724849961,"num_comments":0,"objectID":"41378981","points":6,"story_id":41378981,"story_text":"Recently, I made public a CSS framework I developed for creating radial designs. During development, I faced several challenges, including testing different features. I noticed that CSS linters and other tools didn't allow me to see why something wasn't working, even if there were no basic errors. Another typical CSS problem was seeing how it was shared across different browsers. Fortunately, I discovered that certain new CSS features can be used to create a series of real-time tests. These features are `@support`, `@container`, and `:has()`.

By combining these features, I developed a testing system not only to check if the framework works in the browser but also, and most importantly, to see if we are applying HTML correctly according to the browser's requirements and avoiding involuntary errors when developing an application.

Since my CSS framework necessarily uses features that only the newest browsers have, such as trigonometric functions like `cos()` and `sin()`, I created a series of rules to test if they are supported by the browser. If they're not, a message appears asking to update the browser. Similarly, if the browser doesn't support `:has()`, which is used throughout the framework.

There are also typical cases of browser incompatibility, so in some non-critical cases, I use `@support` or `@container` to hide certain Orbit features that don't affect its use. For example, Safari doesn't accept SVG `context-stroke`, so I hide them.

However, beyond those critical checks and compatibility, the most common issue when using a CSS framework is not knowing how to use it properly. That's why I created other CSS rules that allow analyzing if a parent element has the required child elements and not others. Here, visual alerts also appear while developing to give a hint about where the error is in the code.

I don't want to bore you with the details specific to Orbit, but I'll leave you the link to the support source and related documentation.

Repo:\nhttps://github.com/zumerlab/orbit

Source file:\nhttps://github.com/zumerlab/orbit/blob/main/src/scss/_support.scss

Orbit related documentation: \nhttps://zumerlab.github.io/orbit-docs/tools/support/

Good to go deeper:\nhttps://heydonworks.com/article/testing-html-with-modern-css

edited: typo Suorce -> Source","title":"A practical way to test HTML and CSS in real-time using only CSS","updated_at":"2024-09-20T17:42:46Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox5"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"I started hacking on what later became SnapDOM in April this year. At first it wasn\u2019t even meant to be a standalone library \u2014 it began as an internal tool for a zoomable UI project (Zumly), I was building. To make that project work, I needed a way to capture DOM elements with high speed and fidelity. Existing DOM-to-image libraries like html2canvas often failed in subtle but important ways: missing pseudo-elements, mis-rendering fonts, ignoring Shadow DOM, or breaking on Safari. What started as a quick internal hack slowly grew into its own project.

Open sourcing SnapDOM changed everything. Suddenly the audience wasn\u2019t just me, but anyone with their own browser, CSS, and HTML quirks. That\u2019s when I realized how immense the attack surface really is. Every combination of engines, DOM structures, styles, and external resources can break in unexpected ways. At times it felt overwhelming, but I\u2019ve learned to treat each bug as a reproducible pattern: isolate it, fix it, and carry the lesson forward.

From the beginning, two principles guided the work: fidelity and speed. Capturing \u201cevery detail\u201d would not matter if the process was unbearably slow, so I spent a lot of time on caching strategies, incremental updates, and efficient DOM cloning. Benchmarking against existing libraries became part of the routine. Performance was never an afterthought \u2014 it was always as important as accuracy.

On the technical side, SnapDOM pushed me into DOM cloning strategies, caching, font embedding heuristics, browser-specific hacks, and the constant tradeoffs between fidelity and performance. On the personal side, it has been just as educational: patience, humility, and learning to really listen to users. Some of the best moments have been receiving thoughtful PRs and clear reproduction cases \u2014 collaboration that genuinely made the project better. The respect shown in these contributions has been one of the most motivating parts of the journey.

Another milestone: only a few months in, SnapDOM already has its first two GitHub Sponsors and has passed 6k stars on GitHub. Knowing that people found enough value to sponsor the project, and that thousands more cared enough to star it, has been incredibly rewarding.

I\u2019ve also been designing a plugin system, so the core stays lean while features like cropping, filters, or alternative exporters can live as extensions. It\u2019s not merged into the mainline yet, but it\u2019s a direction I\u2019m excited about \u2014 and another layer of complexity to manage as the project evolves.

It\u2019s still early days, but reflecting on the journey from April to now has been meaningful. What started as a small internal helper for a zoomable UI turned into an open source project with real users, contributions, sponsors, and community respect. Balancing the technical struggles with the human side of open source has made this one of the most rewarding experiences I\u2019ve had so far.

Thank you,\nMartin

Repo: https://github.com/zumerlab/snapdom"},"title":{"matchLevel":"none","matchedWords":[],"value":"From frustration to open source adoption: my journey building SnapDOM"}},"_tags":["story","author_tinchox5","story_45394753","ask_hn"],"author":"tinchox5","created_at":"2025-09-27T11:04:38Z","created_at_i":1758971078,"num_comments":0,"objectID":"45394753","points":3,"story_id":45394753,"story_text":"I started hacking on what later became SnapDOM in April this year. At first it wasn\u2019t even meant to be a standalone library \u2014 it began as an internal tool for a zoomable UI project (Zumly), I was building. To make that project work, I needed a way to capture DOM elements with high speed and fidelity. Existing DOM-to-image libraries like html2canvas often failed in subtle but important ways: missing pseudo-elements, mis-rendering fonts, ignoring Shadow DOM, or breaking on Safari. What started as a quick internal hack slowly grew into its own project.

Open sourcing SnapDOM changed everything. Suddenly the audience wasn\u2019t just me, but anyone with their own browser, CSS, and HTML quirks. That\u2019s when I realized how immense the attack surface really is. Every combination of engines, DOM structures, styles, and external resources can break in unexpected ways. At times it felt overwhelming, but I\u2019ve learned to treat each bug as a reproducible pattern: isolate it, fix it, and carry the lesson forward.

From the beginning, two principles guided the work: fidelity and speed. Capturing \u201cevery detail\u201d would not matter if the process was unbearably slow, so I spent a lot of time on caching strategies, incremental updates, and efficient DOM cloning. Benchmarking against existing libraries became part of the routine. Performance was never an afterthought \u2014 it was always as important as accuracy.

On the technical side, SnapDOM pushed me into DOM cloning strategies, caching, font embedding heuristics, browser-specific hacks, and the constant tradeoffs between fidelity and performance. On the personal side, it has been just as educational: patience, humility, and learning to really listen to users. Some of the best moments have been receiving thoughtful PRs and clear reproduction cases \u2014 collaboration that genuinely made the project better. The respect shown in these contributions has been one of the most motivating parts of the journey.

Another milestone: only a few months in, SnapDOM already has its first two GitHub Sponsors and has passed 6k stars on GitHub. Knowing that people found enough value to sponsor the project, and that thousands more cared enough to star it, has been incredibly rewarding.

I\u2019ve also been designing a plugin system, so the core stays lean while features like cropping, filters, or alternative exporters can live as extensions. It\u2019s not merged into the mainline yet, but it\u2019s a direction I\u2019m excited about \u2014 and another layer of complexity to manage as the project evolves.

It\u2019s still early days, but reflecting on the journey from April to now has been meaningful. What started as a small internal helper for a zoomable UI turned into an open source project with real users, contributions, sponsors, and community respect. Balancing the technical struggles with the human side of open source has made this one of the most rewarding experiences I\u2019ve had so far.

Thank you,\nMartin

Repo: https://github.com/zumerlab/snapdom","title":"From frustration to open source adoption: my journey building SnapDOM","updated_at":"2026-03-05T22:45:30Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox5"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"Orbit CSS reached its V.1.0.0 and it is finally stable. Hope you find it useful and easy to use.

In the doc site (https://zumerlab.github.io/orbit-docs/) you can play with a multilevel piemenu

...and explore potencial use cases covered in examples:\n- Progress bars\n- Charts (e.g., pie charts, multi-level pies, sunburst charts)\n- Gauges\n- Knobs\n- Pie menus\n- Watch faces\n- Sci-fi art\n- Chemical structures\n- Calendars\n- Dashboards\n- Mandalas

Whatever, have a good 2025!!"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: First Orbit stable version to build any kind of radial UI with CSS only"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://github.com/zumerlab/orbit"}},"_tags":["story","author_tinchox5","story_42542339","show_hn"],"author":"tinchox5","created_at":"2024-12-29T19:36:28Z","created_at_i":1735500988,"num_comments":0,"objectID":"42542339","points":3,"story_id":42542339,"story_text":"Orbit CSS reached its V.1.0.0 and it is finally stable. Hope you find it useful and easy to use.

In the doc site (https://zumerlab.github.io/orbit-docs/) you can play with a multilevel piemenu

...and explore potencial use cases covered in examples:\n- Progress bars\n- Charts (e.g., pie charts, multi-level pies, sunburst charts)\n- Gauges\n- Knobs\n- Pie menus\n- Watch faces\n- Sci-fi art\n- Chemical structures\n- Calendars\n- Dashboards\n- Mandalas

Whatever, have a good 2025!!","title":"Show HN: First Orbit stable version to build any kind of radial UI with CSS only","updated_at":"2024-12-30T06:56:27Z","url":"https://github.com/zumerlab/orbit"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"based2"},"title":{"matchLevel":"none","matchedWords":[],"value":"New critical vulnerability in multiple high-privileged Android services"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://blog.zimperium.com/cve-2018-9411-new-critical-vulnerability-multiple-high-privileged-android-services/"}},"_tags":["story","author_based2","story_18352769"],"author":"based2","children":[18362168,18362644,18362838,18363428],"created_at":"2018-11-01T11:11:08Z","created_at_i":1541070668,"num_comments":17,"objectID":"18352769","points":233,"story_id":18352769,"title":"New critical vulnerability in multiple high-privileged Android services","updated_at":"2024-09-20T03:18:35Z","url":"https://blog.zimperium.com/cve-2018-9411-new-critical-vulnerability-multiple-high-privileged-android-services/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox5"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Orbit \u2013 A CSS radial UI composer framework"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://zumerlab.github.io/orbit-docs/"}},"_tags":["story","author_tinchox5","story_41189637","show_hn"],"author":"tinchox5","children":[41189642,41191476,41191543,41192011,41192144,41192307,41194824,41203255,41214397],"created_at":"2024-08-08T09:35:46Z","created_at_i":1723109746,"num_comments":26,"objectID":"41189637","points":145,"story_id":41189637,"title":"Show HN: Orbit \u2013 A CSS radial UI composer framework","updated_at":"2024-09-20T17:38:14Z","url":"https://zumerlab.github.io/orbit-docs/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox6"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: I created snapDOM to capture DOM nodes as images with exceptional speed"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://github.com/zumerlab/snapdom"}},"_tags":["story","author_tinchox6","story_43813330","show_hn"],"author":"tinchox6","children":[43813611,43813622,43813674,43813740,43813871,43813890,43814037,43814143,43814405,43814523,43814555,43814739,43816417,43816972,43819875,43822199,43864024,43886960],"created_at":"2025-04-27T17:00:29Z","created_at_i":1745773229,"num_comments":43,"objectID":"43813330","points":120,"story_id":43813330,"title":"Show HN: I created snapDOM to capture DOM nodes as images with exceptional speed","updated_at":"2026-01-13T13:24:05Z","url":"https://github.com/zumerlab/snapdom"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"eugenv"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: I made an RSS News Reader that prioritizes topics you care about"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://www.zuperlist.com/"}},"_tags":["story","author_eugenv","story_15514805","show_hn"],"author":"eugenv","children":[15514807,15517728,15517817,15518056,15518070,15518263,15518383,15518883,15520585],"created_at":"2017-10-20T10:53:10Z","created_at_i":1508496790,"num_comments":29,"objectID":"15514805","points":61,"story_id":15514805,"title":"Show HN: I made an RSS News Reader that prioritizes topics you care about","updated_at":"2024-09-20T01:27:46Z","url":"https://www.zuperlist.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jmm77"},"title":{"matchLevel":"none","matchedWords":[],"value":"Benchmark: snapDOM vs html2canvas"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://zumerlab.github.io/snapdom/"}},"_tags":["story","author_jmm77","story_44307298"],"author":"jmm77","children":[44307899,44308036,44308056,44308236,44308287],"created_at":"2025-06-18T06:55:54Z","created_at_i":1750229754,"num_comments":16,"objectID":"44307298","points":47,"story_id":44307298,"title":"Benchmark: snapDOM vs html2canvas","updated_at":"2025-07-29T05:46:04Z","url":"https://zumerlab.github.io/snapdom/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"PaulSec"},"title":{"matchLevel":"none","matchedWords":[],"value":"How I Hacked Telegram\u2019s \u201cEncryption\u201d"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"http://blog.zimperium.com/telegram-hack/"}},"_tags":["story","author_PaulSec","story_9095059"],"author":"PaulSec","children":[9095826,9095884,9095885,9095901,9095932,9095936,9096137],"created_at":"2015-02-23T16:17:14Z","created_at_i":1424708234,"num_comments":17,"objectID":"9095059","points":40,"story_id":9095059,"title":"How I Hacked Telegram\u2019s \u201cEncryption\u201d","updated_at":"2025-07-25T20:47:52Z","url":"http://blog.zimperium.com/telegram-hack/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tinchox5"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: I made a set of devtools for small projects"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["zumper"],"value":"https://github.com/zumerlab/zumerbox"}},"_tags":["story","author_tinchox5","story_39843392","show_hn"],"author":"tinchox5","children":[39843394,39845537,39854429,39859485],"created_at":"2024-03-27T19:16:21Z","created_at_i":1711566981,"num_comments":7,"objectID":"39843392","points":28,"story_id":39843392,"title":"Show HN: I made a set of devtools for small projects","updated_at":"2024-09-20T16:41:20Z","url":"https://github.com/zumerlab/zumerbox"}],"hitsPerPage":50,"nbHits":488,"nbPages":10,"page":0,"params":"query=Zumper&tags=story&hitsPerPage=50&advancedSyntax=true&analyticsTags=backend","processingTimeMS":10,"processingTimingsMS":{"_request":{"roundTrip":23},"afterFetch":{"format":{"highlighting":1,"total":1},"merge":{"mergeLoop":{"prepareNextHit":7,"total":7},"total":7},"total":7},"fetch":{"query":1,"total":2},"total":10},"query":"Zumper","serverTimeMS":12}