[{"data":1,"prerenderedAt":206},["ShallowReactive",2],{"project-28959174":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":33,"aspects":34,"strip":37,"post_text":40,"what":41,"said":73,"maker_in_thread":129,"shape":139,"grid":142,"attempts":166,"same_week":167,"maker_shows":30,"maker_hidden":197,"reader_version":198,"card":199},"28959174","Semgrep App","https:\u002F\u002Fsemgrep.dev\u002Fproducts\u002Fsemgrep-app Hi!","post","Show HN: Semgrep App",null,"underyx",1634919870,2021,79,13,642,2533,26,"notable","dev_tools","static analysis","web_app",[20,23,24,25],"application security","linter","code scanning","roasted",-0.294,{"positive":29,"neutral":30,"mixed":31,"critical":32},1,2,0,4,7,{"idea":35,"design":36},{"positive":29,"critical":31},{"positive":31,"critical":32},[38,31,39,31,29,31,29,29,38,31,31,29,31],3,5,"https:\u002F\u002Fsemgrep.dev\u002Fproducts\u002Fsemgrep-app\n\nHi! I work on Semgrep, an open-source project (discussed on HN previously [0][1)]. We’re one of those companies that maintain an OSS tool and a web app, and then monetize by selling enterprise features on said web app. Our free web app just went through a major revamp (sort of like a v1.0 release) so this feels like the perfect time to share and hear what the HN crowd thinks!\n\nLet me start with some backstory on Semgrep. Our team, r2c, has been experimenting with various ways to help organizations step up their application security game. One of our ear",{"problem":42,"audience":47,"pricing":51,"motivation":55,"time_to_build":9,"stack":59,"openness":70,"stage":71,"team_size":72},{"value":43,"source":44,"evidence":45},"Rolling out the Semgrep CLI across an organization: scanning many repos, reviewing results, deploying custom rules","maker",[46],{"id":7},{"value":48,"source":44,"evidence":49},"Organizations running application security across many repositories",[50],{"id":7},{"value":52,"source":44,"evidence":53},"Free web app tier; enterprise features sold",[54],{"id":7},{"value":56,"source":44,"evidence":57},"Company maintains an open-source tool and monetizes via enterprise features in the web app",[58],{"id":7},[60,66],{"value":61,"source":44,"evidence":62},"Python",[63],{"id":64,"by":10,"text":65},"28959765","Technically, OCaml only applies to Semgrep, as the app which is the subject of this post uses a more neo-traditional Python & TypeScript stack :) I don't have full context on the…",{"value":67,"source":44,"evidence":68},"TypeScript",[69],{"id":64,"by":10,"text":65},"open_source","launched","company",{"praise":74,"objections":75,"requests":102,"questions":103,"alternatives":118},[],[76,88,95],{"value":77,"source":78,"evidence":79},"Layout bugs: green check marks overlap text on Firefox, Brave and Chromium","commenter",[80,84],{"id":81,"by":82,"text":83},"28960028","Fervicus","Congrats on the launch! Just a heads up that the website seems to have some issues on Firefox. The green check marks show up over the copy making it unreadable.",{"id":85,"by":86,"text":87},"28963115","pedalpete","Not just firefox, brave (chromium) too",{"value":89,"source":78,"evidence":90},"Overlapping dialog over infographic on Chromium\u002FLinux",[91],{"id":92,"by":93,"text":94},"28960517","smoldesu","Is the \"Enforce Security\" dialogue on your website supposed to overlap with the infographic? I'm browsing on Chromium\u002FLinux",{"value":96,"source":78,"evidence":97},"Fix still broken on Safari",[98],{"id":99,"by":100,"text":101},"28964322","DrBenCarson","Still broken on Safari",[],[104,111],{"value":105,"source":78,"evidence":106},"What Semgrep is and whether it replaces ESLint or orchestrates linters",[107],{"id":108,"by":109,"text":110},"28961524","losvedir","This looks neat, but I'm still not sure I quite get it. Do I understand correctly that earlier tools helped you use, e.g., ESLint, but now it replaces ESLint and does the linting…",{"value":112,"source":78,"evidence":113},"Why OCaml was chosen",[114],{"id":115,"by":116,"text":117},"28959644","frellus","Most of it written in OCaml, cool! What made you pick OCaml as the primary language to use for the business logic?",[119,123],{"value":120,"source":78,"evidence":121},"ESLint",[122],{"id":108,"by":109,"text":110},{"value":124,"source":44,"evidence":125},"Bandit",[126],{"id":127,"by":10,"text":128},"28961727","Semgrep replaces ESLint’s security rules. We have a ruleset[0] which shows you how we reimplemented the eslint security plugin’s rules with our pattern matching language. I’m not…",{"comments":130,"answered":39,"key":131},6,[132,133,136],{"id":64,"text":65},{"id":134,"text":135},"28961804","To add some context, padator is on the Semgrep team; he’s the person I referenced as > One of our team members at r2c came up with a novel approach to this problem: he suggested…",{"id":137,"text":138},"28960408","Thank you! We're releasing a fix for this right now.",{"commenters":140,"max_depth":38,"maker_replies":130,"first_comment_mins":141,"lifespan_hours":140},8,34,[143,145,147,151,153,155,156,157,158,160,161,163,164],[115,31,38,144,116,31],"maker\u002Fneutral\u002Fidea",[64,31,31,146,10,29],"maker\u002Fneutral\u002Fexecution",[148,31,39,149,150,31],"28961707","project\u002Fpositive\u002Fidea","padator",[134,31,31,152,10,29],"commenter\u002Fneutral\u002Fnone",[81,29,29,154,82,31],"project\u002Fcritical\u002Fdesign",[137,29,31,146,10,29],[99,29,29,154,100,31],[85,29,29,154,86,31],[108,30,38,159,109,31],"project\u002Fneutral\u002Fidea",[127,30,31,159,10,29],[162,30,31,159,10,29],"28962013",[92,38,29,154,93,31],[165,38,31,146,10,29],"28960608",[],[168,173,178,183,187,192],{"id":169,"name":170,"points":171,"category":172},"28985936","cric-code",674,"consumer_social",{"id":174,"name":175,"points":176,"category":177},"29010443","Coding Font",443,"productivity",{"id":179,"name":180,"points":181,"category":182},"28997309","CookLang",415,"languages",{"id":184,"name":185,"points":186,"category":19},"29009935","HTTP 419 Never Gonna Give You Up",262,{"id":188,"name":189,"points":190,"category":191},"28968184","sub.live",236,"creative",{"id":193,"name":194,"points":195,"category":196},"28944426","libvf.io",203,"infrastructure",false,"v2",{"id":200,"name":5,"line":6,"ai":197,"cat":19,"year":12,"points":13,"comments":14,"rec":26,"s":201,"top":17,"kw":202,"maker":10,"domain":203,"tier":18,"attempts":31,"strip":204,"url":-1,"mix":205,"praise":-1,"objection":77,"sub":20},28959174,-0.29,[20,23,24,25],"","3050101130010",[29,30,31,32],1794036612471]