[{"data":1,"prerenderedAt":226},["ShallowReactive",2],{"project-26292687":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":34,"aspects":35,"strip":41,"post_text":44,"what":45,"said":75,"maker_in_thread":152,"shape":157,"grid":160,"attempts":189,"same_week":190,"maker_shows":40,"maker_hidden":219,"reader_version":220,"card":221},"26292687","QueryCal","calculate metrics from your calendars using SQL","title","Show HN: QueryCal – calculate metrics from your calendars using SQL","https:\u002F\u002Fquerycal.com","querycal.com","bradleyjkemp",1614512782,2021,75,13,665,2533,27,"notable","productivity","calendar analytics","web_app",[21,24,25,26,27],"sql","sqlite","calendar metrics","ical","mixed",0.2,{"positive":31,"neutral":32,"mixed":33,"critical":32},4,1,0,6,{"docs":36,"idea":37,"execution":38,"design":39},{"positive":32,"critical":33},{"positive":32,"critical":33},{"positive":33,"critical":32},{"positive":40,"critical":33},2,[33,42,33,33,42,33,43,33,42,33,42,32,33],5,3,null,{"problem":46,"audience":44,"pricing":44,"motivation":53,"time_to_build":44,"stack":57,"openness":73,"stage":74,"team_size":73},{"value":47,"source":48,"evidence":49},"Calendars hold tracked data (like time off) but no easy way to query metrics from it","maker",[50],{"id":51,"by":11,"text":52},"26292688","Hey HN, I built this project because last year I did a terrible job of actually taking time off work and needed a way to see just how overdue I was to take a day off. Because so…",{"value":54,"source":48,"evidence":55},"Wanted to see how overdue they were to take time off work",[56],{"id":51,"by":11,"text":52},[58,65,69],{"value":59,"source":48,"evidence":60},"SQLite",[61,62],{"id":51,"by":11,"text":52},{"id":63,"by":11,"text":64},"26301036","Interesting, hadn't seen the virtual table feature of SQLite. I'd have to do some benchmarking but that could be worth switching to in future for perhaps getting fresher data.…",{"value":66,"source":48,"evidence":67},"Go",[68],{"id":51,"by":11,"text":52},{"value":70,"source":48,"evidence":71},"Grafana integration",[72],{"id":51,"by":11,"text":52},"unknown","beta",{"praise":76,"objections":99,"requests":118,"questions":137,"alternatives":146},[77,89],{"value":78,"source":79,"evidence":80},"Neat idea for measuring activity from calendars","commenter",[81,85],{"id":82,"by":83,"text":84},"26301786","rubyfan","This is a really neat idea. I usually apply categories to my calendar invites so I can see quickly if I’m spending too much time (or not enough time) toward any type of activity.…",{"id":86,"by":87,"text":88},"26294042","mechero","Good idea! As a suggestion, I think your website could use some extra documentation and examples. For example, could I create a panel in Grafana showing the busy vs. free ratio…",{"value":90,"source":79,"evidence":91},"SQLite-per-user design is appealing",[92,96],{"id":93,"by":94,"text":95},"26299316","simonhamp","I love it and will give it a go! I'm also intrigued by your 'SQLite-per-user' structure and would be keen to hear how you get on with that long-term. For instance, how will you…",{"id":97,"by":94,"text":98},"26309778","Sounds ideal. I really like the isolation of separate DB files per user. In more complex systems though it feels like it's going to require quite a bit of orchestration. The big…",[100,107,114],{"value":101,"source":79,"evidence":102},"Demo button did not work on Firefox",[103],{"id":104,"by":105,"text":106},"26301434","waltteri","Clicking \"Demo\" on Ubuntu\u002FFirefox 86.0 does nothing :(",{"value":108,"source":79,"evidence":109},"Documentation and examples are lacking",[110,111],{"id":86,"by":87,"text":88},{"id":112,"by":11,"text":113},"26294169","Absolutely! A starting point would be something like this to calculate total busy time per day: SELECT sum(end - start) from events group by JULIANDAY(start) Some extra…",{"value":115,"source":79,"evidence":116},"Outlook users cannot easily connect calendar",[117],{"id":82,"by":83,"text":84},[119,123,130],{"value":120,"source":79,"evidence":121},"Add more documentation and examples",[122],{"id":86,"by":87,"text":88},{"value":124,"source":79,"evidence":125},"Support Outlook or OAuth calendar plugins",[126,127],{"id":82,"by":83,"text":84},{"id":128,"by":11,"text":129},"26301825","Does your company let you share your calendar privately via an iCal URL? That's the only method of adding your calendar to QueryCal at the moment anyway but is also more likely…",{"value":131,"source":79,"evidence":132},"Live queries via SQLite virtual tables",[133],{"id":134,"by":135,"text":136},"26299464","patrickdevivo","This looks awesome! Seems like a great idea - I'm curious - do you download the full calendar first into a SQLite DB file and then let a user execute queries? SQLite has a…",[138,142],{"value":139,"source":79,"evidence":140},"How will schema migrations be handled?",[141],{"id":93,"by":94,"text":95},{"value":143,"source":79,"evidence":144},"Is the full calendar downloaded into SQLite first?",[145],{"id":134,"by":135,"text":136},[147],{"value":148,"source":48,"evidence":149},"Go MySQL implementation (go-mysql-server)",[150,151],{"id":51,"by":11,"text":52},{"id":63,"by":11,"text":64},{"comments":34,"answered":31,"key":153},[154,155,156],{"id":51,"text":52},{"id":112,"text":113},{"id":128,"text":129},{"commenters":158,"max_depth":43,"maker_replies":34,"first_comment_mins":32,"lifespan_hours":159},7,35,[161,163,165,167,171,173,175,177,179,181,184,185,187],[51,33,33,162,11,32],"project\u002Fneutral\u002Fidea",[86,33,42,164,87,33],"project\u002Fpositive\u002Fdocs",[112,33,33,166,11,32],"project\u002Fneutral\u002Fdocs",[168,32,33,169,170,33],"26302634","other\u002Fneutral\u002Fnone","prionassembly",[82,40,42,172,83,33],"project\u002Fpositive\u002Fidea",[128,40,33,174,11,32],"project\u002Fneutral\u002Fnone",[134,43,43,176,135,33],"project\u002Fneutral\u002Fexecution",[63,43,33,178,11,32],"project\u002Fneutral\u002Fperformance",[93,31,42,180,94,33],"project\u002Fpositive\u002Fdesign",[182,31,33,183,11,32],"26301068","project\u002Fneutral\u002Fdesign",[97,31,42,180,94,33],[104,42,32,186,105,33],"project\u002Fcritical\u002Fexecution",[188,42,33,176,11,32],"26301478",[],[191,196,201,206,211,215],{"id":192,"name":193,"points":194,"category":195},"26271117","Redbean",1998,"infrastructure",{"id":197,"name":198,"points":199,"category":200},"26258773","GamestonkTerminal",1422,"finance_crypto",{"id":202,"name":203,"points":204,"category":205},"26260390","UTM",418,"dev_tools",{"id":207,"name":208,"points":209,"category":210},"26277602","Hummingbard",412,"consumer_social",{"id":212,"name":213,"points":214,"category":205},"26295100","win3wm",327,{"id":216,"name":217,"points":218,"category":20},"26306478","Ten seconds to ponder if a thread is worth it",148,false,"v2",{"id":222,"name":5,"line":6,"ai":219,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":223,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":224,"url":9,"mix":225,"praise":78,"objection":101,"sub":21},26292687,[21,24,25,26,27],"0500503050510",[31,32,33,32],1794036603831]