[{"data":1,"prerenderedAt":376},["ShallowReactive",2],{"project-41291700":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":14,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":45,"post_text":48,"what":49,"said":89,"maker_in_thread":207,"shape":217,"grid":221,"attempts":339,"same_week":340,"maker_shows":34,"maker_hidden":369,"reader_version":370,"card":371},"41291700","Srcbook","A TypeScript notebook for rapid prototyping","title","Show HN: Srcbook – A TypeScript notebook for rapid prototyping","https:\u002F\u002Fgithub.com\u002Fsrcbookdev\u002Fsrcbook","github.com","nichochar",1724080196,2024,267,50,3515,8,"legend","dev_tools","notebook","desktop_app",[23,24,25,26,27],"typescript notebook","node.js notebook","jupyter alternative","literate programming","markdown notebook","curious",0.14,{"positive":31,"neutral":32,"mixed":33,"critical":34},9,17,0,4,30,{"idea":37,"privacy":40,"performance":42,"pricing":43,"execution":44},{"positive":38,"critical":39},7,2,{"positive":33,"critical":41},1,{"positive":33,"critical":41},{"positive":33,"critical":33},{"positive":33,"critical":33},[46,33,46,47,33,47,47,47,47,33,47,47,33,46,47,47,46,33,33,46,33,33,33,47,33,47,47,47,46,33,46,47,47,33,41,33,33,33,41,47],5,3,"Srcbook (”source-book”) is an open-source TypeScript notebook that runs locally, powered by Node.js. It shines for rapid prototyping, code exploration, and collaborating on ideas. It’s inspired by Python’s Jupyter and Elixir’s Livebook.\n\nKey features:\n\n- Full npm ecosystem access\n\n- AI-assisted coding (OpenAI, Anthropic, or local models), it can iterate on the cells for you with a code diff UX that you accept\u002Freject for a given code cell, generate entire Srcbooks, fix compilation issues, etc…\n\n- Exports to valid markdown for easy sharing and version control\n\nTry it now: `npx srcbook start`\n\nEx",{"problem":50,"audience":56,"pricing":68,"motivation":69,"time_to_build":68,"stack":73,"openness":86,"stage":87,"team_size":88},{"value":51,"source":52,"evidence":53},"Lack of a Jupyter-like environment for TypeScript prototyping","maker",[54],{"id":55},"post",{"value":57,"source":58,"evidence":59},"Frontend and Node developers prototyping and exploring code","inferred",[60,64],{"id":61,"by":62,"text":63},"41297278","jwilber","I think this really nails a missing sweet spot for frontend\u002Fnode projects. Observable is a great notebook env for dataviz, but the bespoke js + observability patterns can feel…",{"id":65,"by":66,"text":67},"41301385","bilalq","Love that this is local. I've messed around trying to get Node on Jupyter with custom kernels, but never got close to a working setup with TypeScript. Two features would be huge:…",null,{"value":70,"source":52,"evidence":71},"Needed a Jupyter-like environment for TypeScript",[72],{"id":55},[74,78,82],{"value":75,"source":52,"evidence":76},"TypeScript",[77],{"id":55},{"value":79,"source":52,"evidence":80},"Node.js",[81],{"id":55},{"value":83,"source":52,"evidence":84},"Markdown export",[85],{"id":55},"open_source","beta","team",{"praise":90,"objections":112,"requests":130,"questions":155,"alternatives":170},[91,104],{"value":92,"source":93,"evidence":94},"Fills a gap for TypeScript and Node notebooks","commenter",[95,96,100],{"id":61,"by":62,"text":63},{"id":97,"by":98,"text":99},"41296522","jumploops","I’ve always wanted a TypeScript-based Jupyter notebook, thanks for building this!",{"id":101,"by":102,"text":103},"41300073","mcintyre1994","This is a cool idea! I often end up just using replit to play with a library, something more like Livebook makes a lot of sense. I like that you're using markdown too, makes…",{"value":105,"source":93,"evidence":106},"Local execution and Markdown format are useful",[107,108],{"id":101,"by":102,"text":103},{"id":109,"by":110,"text":111},"41301689","tcsenpai","Very nice. I am trying using ollama with it, looks like something is off either on my server or in the way the program calls it: I get the CPU used instead of the GPU (while…",[113,124],{"value":114,"source":93,"evidence":115},"Analytics collected by default raise privacy concerns",[116,120],{"id":117,"by":118,"text":119},"41301728","prophesi","To those concerned about the analytics like myself, you should be able to turn it off by setting the default here to false. Otherwise you'd need to toggle it off in the settings,…",{"id":121,"by":122,"text":123},"41302801","blorenz","Comment above linked line states \u002F\u002F Allows us to improve Srcbook, we don't collect any PII. I ask that you please consider assisting developers improve their FOSS - free as in…",{"value":125,"source":52,"evidence":126},"Running arbitrary downloaded srcbooks is a security risk",[127],{"id":128,"by":11,"text":129},"41300532","The code runs locally on your machine. Right now the architecture is that each Srcbook has 2 representations: - a markdown encoding that we use when you export. Easier to share,…",[131,141,151],{"value":132,"source":93,"evidence":133},"Browser cell for running code outside Node",[134,138],{"id":135,"by":136,"text":137},"41298063","gryzzly","Very cool! I wish there was also a \"browser\" cell, so that the execution wouldn’t be happening in the node.",{"id":139,"by":11,"text":140},"41296542","This is on our roadmap, yes. We focused on node first because we thought that was missing (you can always spin up a devserver for component), but we'd like to introduce a browser…",{"value":142,"source":93,"evidence":143},"React\u002FMDX component support",[144,148],{"id":145,"by":146,"text":147},"41296423","adamddev1","Does this include, or are there plans for MDX\u002FReact component support? That would be amazing and I would use it extensively.",{"id":149,"by":146,"text":150},"41323613","It would be nice to do little interactive examples, and React\u002FMDX seems to be the easiest way to do this. I have have a similar thing wired up with https:\u002F\u002Fgrammar.lingdocs.com…",{"value":152,"source":93,"evidence":153},"VSCode extension",[154],{"id":65,"by":66,"text":67},[156,163],{"value":157,"source":93,"evidence":158},"How does it compare with Observable",[159],{"id":160,"by":161,"text":162},"41296715","xixixao","How does it compare with Observable? https:\u002F\u002Fobservablehq.com\u002F",{"value":164,"source":93,"evidence":165},"Is code sandboxed",[166],{"id":167,"by":168,"text":169},"41298455","h1fra","Very nice, how do you run the code? is it securely sandboxed?",[171,179,194,201],{"value":172,"source":93,"evidence":173},"Observable",[174,175],{"id":160,"by":161,"text":162},{"id":176,"by":177,"text":178},"41297944","fsiefken","Compared to Observable, it's apache-2 licensed and it's self-hostable. The d3, p5 and database access you have to add yourself. With Observable user, workspace, diagramming and…",{"value":180,"source":93,"evidence":181},"Jupyter with Deno or JS kernels",[182,186,190],{"id":183,"by":184,"text":185},"41296779","bityard","Jupyter can run JS kernels these days.",{"id":187,"by":188,"text":189},"41302517","adius","If you don't mind using Deno instead of Node, it's integrated Jupyter Kernel makes it really easy: https:\u002F\u002Fdocs.deno.com\u002Fruntime\u002Fmanual\u002Ftools\u002Fjupyter\u002F",{"id":191,"by":192,"text":193},"41297663","valstu","I just recently found out that there is Deno kernel for Jupyter notebook https:\u002F\u002Fblog.jupyter.org\u002Fbringing-modern-javascript-to-the-jupyter-notebook-fc998095081e",{"value":195,"source":93,"evidence":196},"Storybook",[197],{"id":198,"by":199,"text":200},"41297489","thawab","Not OP but i am interested in the same idea to document components. An alternative to storybook.",{"value":202,"source":52,"evidence":203},"Replit",[204],{"id":205,"by":11,"text":206},"41300473","Thanks! Yes when we asked people what they used to prototype, we got the weirdest answers. Replit seems very heavyweight, and isn't local (always feels worse). For non-npm…",{"comments":208,"answered":46,"key":209},10,[210,213,214],{"id":211,"text":212},"41300507","I somehow didn't know about https:\u002F\u002Fgithub.com\u002Ftypst\u002Ftypst. This is a really cool project, going to dig in further. At first glance, this seems particularly useful for…",{"id":139,"text":140},{"id":215,"text":216},"41296843","They're both notebooks for TypeScript, but Observable is highly specialized in data visualizations (graphs, plots, etc...) and runs in the browser. Srcbook is built for different…",{"commenters":218,"max_depth":46,"maker_replies":208,"first_comment_mins":219,"lifespan_hours":220},32,24,158,[222,225,227,228,232,234,236,240,243,245,246,247,250,251,253,254,257,259,260,262,263,264,266,270,272,273,274,277,279,281,282,284,286,289,294,296,298,299,304,306,307,312,315,318,320,323,326,329,332,336],[223,33,46,224,177,33],"41298080","project\u002Fpositive\u002Fidea",[211,33,33,226,11,41],"project\u002Fneutral\u002Fidea",[61,41,46,224,62,33],[229,39,46,230,231,33],"41303550","maker\u002Fpositive\u002Fnone","gabrielcsapo",[117,47,41,233,118,33],"project\u002Fcritical\u002Fprivacy",[121,47,33,235,122,33],"commenter\u002Fneutral\u002Fprivacy",[237,47,47,238,239,33],"41302901","maker\u002Fneutral\u002Fprivacy","benjreinhart",[241,47,47,242,118,33],"41304496","project\u002Fneutral\u002Fprivacy",[244,47,47,238,239,33],"41304629",[65,34,47,226,66,33],[187,34,47,226,188,33],[248,34,33,249,66,33],"41305772","commenter\u002Fneutral\u002Fnone",[145,46,47,226,146,33],[139,46,33,252,11,41],"maker\u002Fneutral\u002Fidea",[198,46,47,226,199,33],[255,46,33,249,256,33],"41297820","lioeters",[258,46,46,224,199,33],"41298309",[149,46,47,226,146,33],[160,261,47,226,161,33],6,[215,261,33,226,11,41],[176,261,46,224,177,33],[265,261,33,249,11,41],"41300513",[267,261,33,268,269,33],"41306872","other\u002Fneutral\u002Fnone","bsimpson",[271,261,47,226,269,33],"41306907",[101,38,46,224,102,33],[205,38,33,226,11,41],[275,38,33,268,276,33],"41300798","SebastianKra",[278,38,33,268,102,33],"41301267",[109,17,41,280,110,33],"project\u002Fcritical\u002Fperformance",[135,31,46,224,136,33],[283,31,33,252,11,41],"41300539",[285,31,47,226,136,33],"41301351",[287,208,47,226,288,33],"41350381","aabbcc1241",[290,291,47,292,293,33],"41291911",11,"maker\u002Fneutral\u002Fnone","mlejva",[295,291,33,292,11,41],"41291961",[97,297,46,224,98,33],12,[191,297,33,268,192,33],[300,301,46,302,303,33],"41297057",13,"project\u002Fpositive\u002Fnone","ashobeiri",[167,305,47,242,168,33],14,[128,305,33,242,11,41],[308,309,47,310,311,33],"41296486",15,"maker\u002Fneutral\u002Fpricing","fkilaiwi",[313,309,33,314,11,41],"41296561","project\u002Fneutral\u002Fpricing",[183,316,41,317,184,33],16,"project\u002Fcritical\u002Fidea",[319,316,33,226,11,41],"41296849",[321,316,33,268,322,33],"41298008","turblety",[324,316,33,249,325,33],"41354149","nsonha",[327,316,33,268,328,33],"41309393","cmanrt",[330,32,41,317,331,33],"41298181","mbo",[333,32,47,334,335,33],"41298493","project\u002Fneutral\u002Fexecution","bubblyworld",[337,32,47,226,338,33],"41299627","Sjlver",[],[341,346,351,356,361,364],{"id":342,"name":343,"points":344,"category":345},"41284703","PgQueuer",376,"languages",{"id":347,"name":348,"points":349,"category":350},"41254740","sqlean-time",274,"data",{"id":352,"name":353,"points":354,"category":355},"41307815","Handwriter.ttf",191,"creative",{"id":357,"name":358,"points":359,"category":360},"41252731","polyfight.io",171,"games",{"id":362,"name":363,"points":359,"category":355},"41271014","Blender shortcuts",{"id":365,"name":366,"points":367,"category":368},"41311489","Permify 1.0",154,"infrastructure",false,"v2",{"id":372,"name":5,"line":6,"ai":369,"cat":19,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":17,"kw":373,"maker":11,"domain":10,"tier":18,"attempts":33,"strip":374,"url":9,"mix":375,"praise":92,"objection":114,"sub":20},41291700,[23,24,25,26,27],"5053033330330533500500030333505330100013",[31,32,33,34],1793991098292]