[{"data":1,"prerenderedAt":248},["ShallowReactive",2],{"project-8520961":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":40,"post_text":41,"what":42,"said":52,"maker_in_thread":136,"shape":145,"grid":149,"attempts":211,"same_week":212,"maker_shows":137,"maker_hidden":240,"reader_version":241,"card":242},"8520961","geo_pattern","Create generative background images from a string in Go","title","Show HN: Create generative background images from a string in Go","https:\u002F\u002Fgithub.com\u002Fpravj\u002Fgeo_pattern","github.com","pravj",1414505015,2014,188,22,113,2272,5,"notable","dev_tools","image generation library","library",[24,25,26,27],"generative background","identicon","go library","svg pattern","debated",0.077,{"positive":31,"neutral":31,"mixed":32,"critical":33},4,1,3,12,{"design":36,"execution":38,"idea":39},{"positive":37,"critical":32},0,{"positive":37,"critical":32},{"positive":33,"critical":32},[33,37,32,33,33,18,37,37,37,37,18,33,37,32,18,37,37,37,18,33,32,37],null,{"problem":41,"audience":41,"pricing":41,"motivation":41,"time_to_build":41,"stack":43,"openness":50,"stage":51,"team_size":51},[44],{"value":45,"source":46,"evidence":47},"Go","maker",[48],{"id":49},"post","open_source","unknown",{"praise":53,"objections":81,"requests":100,"questions":109,"alternatives":123},[54,70],{"value":55,"source":56,"evidence":57},"Cool project and nice visualizations","commenter",[58,62,66],{"id":59,"by":60,"text":61},"8521157","chii","This is really cool! I quite like the js port https:\u002F\u002Fgithub.com\u002Fbtmills\u002Fgeopattern which you can drop into a website very easily.",{"id":63,"by":64,"text":65},"8521536","f2f","nice project, and pretty cool visualizations! i did port a lot of the xscreensavers to plan9 and then a few of them to go when go came out. this reminds me a lot of some of them.…",{"id":67,"by":68,"text":69},"8521792","zorbash","Nice idea and implementation. We developed a related application which creates colors from git commit sha strings. Have a look at http:\u002F\u002Fgitart.me\u002Frepos\u002Frails\u002Frails",{"value":71,"source":56,"evidence":72},"Useful for identicon-style consistent backgrounds from a seed like a username",[73,77],{"id":74,"by":75,"text":76},"8523108","xnxn","Say I'm using this to generate a background image for each post on HN. Also, I want them to be consistent, so everywhere you see a mVChr post it's got a green ringed background.…",{"id":78,"by":79,"text":80},"8523516","mVChr","Got it. I can envision the uses for it now. Thanks for the explanation.",[82,93],{"value":83,"source":56,"evidence":84},"Go API design is unidiomatic: map options instead of a struct, stringly typed inputs",[85,89],{"id":86,"by":87,"text":88},"8521422","ImJasonH","Some Go API style nits: - it's unusual to pass a map with expected keys like this. Normally you'd pass a struct like: p := New(Options{ BaseColor: \"...\", Color: \"...\", Generator:…",{"id":90,"by":91,"text":92},"8522138","pdpi","Regarding 4, I personally tend to be distrustful of what is often described as Stringly Typed code. To me, statically constraining your API to only accept valid inputs seems like…",{"value":94,"source":56,"evidence":95},"Uses reflection where a type switch would be more idiomatic",[96],{"id":97,"by":98,"text":99},"8523498","betamike","Another minor nitpick, here [1] you are using reflection. You can pretty easily convert it to a type switch [2], which is more idiomatic. [1]…",[101,105],{"value":102,"source":56,"evidence":103},"Use constants for known patterns and camel-case field names",[104],{"id":86,"by":87,"text":88},{"value":106,"source":56,"evidence":107},"Support animation of the patterns",[108],{"id":63,"by":64,"text":65},[110,116],{"value":111,"source":56,"evidence":112},"What is the point of generating from a hash of a string versus random patterns",[113],{"id":114,"by":79,"text":115},"8522456","This is not meant to be snarky, but what's the point of this? What use does the pattern being uniquely generated from a SHA of a distinct string have over a random pattern being…",{"value":117,"source":56,"evidence":118},"Who owns copyright of generated images",[119],{"id":120,"by":121,"text":122},"8522098","MichaelApproved","I see they have an MIT license, which is great, but I have a theoretical copyright question. If they didn't license out the code and, instead, made a background-image-generating…",[124,128,132],{"value":125,"source":56,"evidence":126},"JavaScript port geopattern",[127],{"id":59,"by":60,"text":61},{"value":129,"source":56,"evidence":130},"gitart.me colors from git commit SHAs",[131],{"id":67,"by":68,"text":69},{"value":133,"source":56,"evidence":134},"X11 screensavers ported to Go",[135],{"id":63,"by":64,"text":65},{"comments":137,"answered":37,"key":138},2,[139,142],{"id":140,"text":141},"8521633","Hi @ImJasonH, I Developed this, let me answer you points :) I believe these points are not contributing in breaking API :D so lets talk on them first. 2. You mean instead of an…",{"id":143,"text":144},"8521865","@zorbash Wow, the concept sounds nice :)",{"commenters":146,"max_depth":33,"maker_replies":137,"first_comment_mins":147,"lifespan_hours":148},19,37,8,[150,152,154,156,160,162,164,168,172,174,177,181,183,186,188,189,191,194,196,198,202,207],[86,37,33,151,87,37],"project\u002Fmixed\u002Fdesign",[140,37,37,153,11,32],"maker\u002Fneutral\u002Fdesign",[90,37,32,155,91,37],"project\u002Fcritical\u002Fdesign",[157,37,33,158,159,37],"8522190","project\u002Fneutral\u002Fdesign","infogulch",[97,37,33,161,98,37],"project\u002Fneutral\u002Fexecution",[59,32,18,163,60,37],"project\u002Fpositive\u002Fnone",[165,32,37,166,167,37],"8521225","other\u002Fpositive\u002Fnone","volent",[169,137,37,170,171,37],"8521180","other\u002Fneutral\u002Fnone","disposition2",[173,137,37,170,60,37],"8521323",[175,137,37,170,176,37],"8521357","latch",[178,33,18,179,180,37],"8523795","project\u002Fpositive\u002Fidea","elwell",[120,31,33,182,121,37],"project\u002Fneutral\u002Fnone",[184,31,37,170,185,37],"8522349","abraham",[114,18,32,187,79,37],"project\u002Fcritical\u002Fidea",[74,18,18,179,75,37],[78,18,37,190,79,37],"commenter\u002Fpositive\u002Fidea",[67,192,37,193,68,37],6,"other\u002Fpositive\u002Fidea",[143,192,37,195,11,32],"maker\u002Fpositive\u002Fidea",[63,197,18,179,64,37],7,[199,148,33,200,201,37],"8521446","project\u002Fneutral\u002Fidea","jbranchaud",[203,204,32,205,206,37],"8522655",9,"project\u002Fcritical\u002Fexecution","jerf",[208,209,37,170,210,37],"8522515",10,"sitkack",[],[213,218,223,227,231,236],{"id":214,"name":215,"points":216,"category":217},"8527185","VirtKick",216,"infrastructure",{"id":219,"name":220,"points":221,"category":222},"8517213","Polarr.co",167,"creative",{"id":224,"name":225,"points":226,"category":222},"8527861","SoundKit",166,{"id":228,"name":229,"points":230,"category":20},"8517722","ZenHub",159,{"id":232,"name":233,"points":234,"category":235},"8505000","padjo.org",120,"learning_science",{"id":237,"name":238,"points":234,"category":239},"8507310","Paperman","productivity",false,"v2",{"id":243,"name":5,"line":6,"ai":240,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":244,"top":18,"kw":245,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":246,"url":9,"mix":247,"praise":55,"objection":83,"sub":21},8520961,0.08,[24,25,26,27],"3013350000530150005310",[31,31,32,33],1794036524366]