[{"data":1,"prerenderedAt":227},["ShallowReactive",2],{"project-8881090":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":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":43,"post_text":46,"what":47,"said":79,"maker_in_thread":154,"shape":162,"grid":166,"attempts":189,"same_week":190,"maker_shows":33,"maker_hidden":219,"reader_version":220,"card":221},"8881090","Slalom","creating declarative touch interactions with constraints","title","Show HN: Slalom – creating declarative touch interactions with constraints","http:\u002F\u002Fiamralpht.github.io\u002Fconstraints\u002F","iamralpht.github.io","i_am_ralpht",1421169067,2015,96,12,255,2565,10,"notable","dev_tools","ui interaction library","library",[24,25,26,27,28],"touch interaction","constraints","cassowary","declarative layout","momentum scrolling","loved",0.524,{"positive":32,"neutral":33,"mixed":33,"critical":34},6,1,0,8,{"idea":37,"design":39,"performance":40,"docs":41,"execution":42},{"positive":38,"critical":34},2,{"positive":34,"critical":34},{"positive":33,"critical":34},{"positive":33,"critical":34},{"positive":33,"critical":34},[44,34,45,34,44,44,44,45,34,44,44,34],5,3,null,{"problem":48,"audience":46,"pricing":46,"motivation":55,"time_to_build":46,"stack":59,"openness":76,"stage":77,"team_size":78},{"value":49,"source":50,"evidence":51},"Writing touch handlers with momentum and wobble-free motion takes days or weeks","maker",[52],{"id":53,"by":11,"text":54},"8882830","Thanks! It's a really fun problem space to work in. As I mentioned, this work was borne out of my frustration from writing a bunch of touch handlers (taking days\u002Fweeks for the…",{"value":56,"source":50,"evidence":57},"Frustration from hand-writing touch handlers for pagers and momentum",[58],{"id":53,"by":11,"text":54},[60,68],{"value":61,"source":62,"evidence":63},"JavaScript","inferred",[64],{"id":65,"by":66,"text":67},"8885309","thomasfl","I hope you'll find time to package both this and your javascript physics code. Your constraints abstraction looks very promising. Now all you need is to package it up. The…",{"value":69,"source":70,"evidence":71},"Cassowary constraint solver","commenter",[72],{"id":73,"by":74,"text":75},"8883626","ux-app","Awesome! This is incredibly cool. Thank you for putting it together. I cant wait to take a closer look at the code! I've been meaning to get my head around cassowary for a while…","open_source","prototype","unknown",{"praise":80,"objections":107,"requests":116,"questions":131,"alternatives":139},[81,96,103],{"value":82,"source":70,"evidence":83},"Impressive, clever examples",[84,88,92],{"id":85,"by":86,"text":87},"8882694","thoughtpalette","Those are some amazing examples. Super impressive.",{"id":89,"by":90,"text":91},"8884654","forrestthewoods","This post is super cool and deserves more love. Physics constraints are super flexible. I've thought about using them for some pathfinding type work but have never tried. This is…",{"id":93,"by":94,"text":95},"8932066","kabes","This is one of the most awesome things for web-based GUIs ever. Performance seems to be decent on my mid-range to high-end mobile devices. Great work!",{"value":97,"source":70,"evidence":98},"Inline demos and small amount of code",[99],{"id":100,"by":101,"text":102},"8883797","panic","Neat! I love how the demos are inline with the exposition and code, and it's striking how little code is necessary to make things go. That said, this paragraph struck me as a…",{"value":104,"source":70,"evidence":105},"Good performance on mobile devices",[106],{"id":93,"by":94,"text":95},[108,112],{"value":109,"source":70,"evidence":110},"Declarative constraint layouts cannot express every special case; procedural code gives more control",[111],{"id":100,"by":101,"text":102},{"value":113,"source":70,"evidence":114},"Slip when dragging from the middle of an element",[115],{"id":100,"by":101,"text":102},[117,124],{"value":118,"source":70,"evidence":119},"More documentation on the constraints",[120],{"id":121,"by":122,"text":123},"8882845","jamieomatthews","These are awesome. Would be cool to see more docs on the constraints themselves, if possible",{"value":125,"source":70,"evidence":126},"Package as a library",[127,128],{"id":65,"by":66,"text":67},{"id":129,"by":11,"text":130},"8882886","Thanks!. For now the source of the examples is the best reference (and is commented with the intent of the constraints):…",[132],{"value":133,"source":70,"evidence":134},"Can the code be reused given the license",[135],{"id":136,"by":137,"text":138},"8884601","thomasfoster96","These are really awesome - a very big well done to the author. Only this morning I was thinking of how to implement a few of these types of interactions for a web app I'm…",[140,144,148],{"value":141,"source":70,"evidence":142},"uilang and uiscript",[143],{"id":136,"by":137,"text":138},{"value":145,"source":70,"evidence":146},"Grid Style Sheets",[147],{"id":136,"by":137,"text":138},{"value":149,"source":50,"evidence":150},"CSS layout",[151],{"id":152,"by":11,"text":153},"8883851","Thanks! Regarding your point on declarative vs imperative I think it depends on your pain threshold--you can't accomplish everything you want with CSS layout, but that doesn't…",{"comments":155,"answered":33,"key":156},4,[157,160,161],{"id":158,"text":159},"8887812","The license is Apache 2, so go for it! Thanks for the pointers on uiscript and uilang; I'll check them out. GSS is also on my list :).",{"id":152,"text":153},{"id":129,"text":130},{"commenters":163,"max_depth":45,"maker_replies":155,"first_comment_mins":164,"lifespan_hours":165},9,253,221,[167,169,171,173,175,177,178,180,182,183,185,187],[136,34,44,168,137,34],"project\u002Fpositive\u002Fidea",[158,34,34,170,11,33],"commenter\u002Fneutral\u002Fnone",[100,33,45,172,101,34],"project\u002Fmixed\u002Fdesign",[152,33,34,174,11,33],"commenter\u002Fneutral\u002Fdesign",[93,38,44,176,94,34],"project\u002Fpositive\u002Fperformance",[89,45,44,168,90,34],[73,155,44,179,74,34],"project\u002Fpositive\u002Fnone",[121,44,45,181,122,34],"project\u002Fneutral\u002Fdocs",[129,44,34,181,11,33],[65,44,44,184,66,34],"project\u002Fpositive\u002Fdocs",[85,32,44,186,86,34],"project\u002Fpositive\u002Fexecution",[53,32,34,188,11,33],"maker\u002Fneutral\u002Fnone",[],[191,195,200,205,210,215],{"id":192,"name":193,"points":194,"category":20},"8888089","blessed-contrib",305,{"id":196,"name":197,"points":198,"category":199},"8869305","LoveActualize",252,"consumer_social",{"id":201,"name":202,"points":203,"category":204},"8857632","sideprojects.assembly.com",175,"web_saas",{"id":206,"name":207,"points":208,"category":209},"8886842","c-smart-pointers",126,"languages",{"id":211,"name":212,"points":213,"category":214},"8882197","Powder",107,"games",{"id":216,"name":217,"points":218,"category":204},"8886588","Youth Service Network (ysnmn.org)",100,false,"v2",{"id":222,"name":5,"line":6,"ai":219,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":223,"top":18,"kw":224,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":225,"url":9,"mix":226,"praise":82,"objection":109,"sub":21},8881090,0.52,[24,25,26,27,28],"503055530550",[32,33,33,34],1794036527309]