[{"data":1,"prerenderedAt":562},["ShallowReactive",2],{"project-38971966":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":35,"aspects":36,"strip":44,"post_text":47,"what":48,"said":80,"maker_in_thread":217,"shape":227,"grid":232,"attempts":525,"same_week":526,"maker_shows":33,"maker_hidden":554,"reader_version":555,"card":556},"38971966","Marimo","an open-source reactive notebook for Python","title","Show HN: Marimo – an open-source reactive notebook for Python","https:\u002F\u002Fgithub.com\u002Fmarimo-team\u002Fmarimo","github.com","akshayka",1705084397,2024,448,106,91,3515,3,"legend","dev_tools","notebook","web_app",[24,25,26,27],"reactive notebook","python notebook","jupyter alternative","reproducible research","mixed",0.273,{"positive":31,"neutral":32,"mixed":33,"critical":34},26,30,2,8,66,{"design":37,"idea":38,"execution":41,"docs":43},{"positive":18,"critical":33},{"positive":39,"critical":40},11,0,{"positive":42,"critical":18},1,{"positive":40,"critical":33},[45,45,40,18,18,45,40,40,40,40,40,40,18,18,45,46,45,18,45,18,40,18,42,45,18,45,45,18,45,18,42,18,46,33,45,45,18,18,45,42],5,4,"Hi HN! We’re excited to share marimo, an open-source reactive notebook for Python [1]. marimo aims to solve well-known problems with traditional notebooks [2]: marimo notebooks are reproducible (no hidden state), git-friendly (stored as Python files), executable as Python scripts, and deployable as web apps.\n\nGitHub repo: https:\u002F\u002Fgithub.com\u002Fmarimo-team\u002Fmarimo\n\nIn marimo, a notebook’s code, outputs, and program state are always consistent. Run a cell and marimo reacts by automatically running the cells that reference its declared variables. Delete a cell and marimo scrubs its variables from pro",{"problem":49,"audience":55,"pricing":59,"motivation":60,"time_to_build":59,"stack":64,"openness":77,"stage":78,"team_size":79},{"value":50,"source":51,"evidence":52},"Traditional notebooks have hidden state, are hard to reproduce and diff in git","maker",[53],{"id":54},"post",{"value":56,"source":51,"evidence":57},"Python researchers, scientists, engineers, and students",[58],{"id":54},null,{"value":61,"source":51,"evidence":62},"Two developers wanted a better programming environment for research, sharing and teaching",[63],{"id":54},[65,69],{"value":66,"source":51,"evidence":67},"Python",[68],{"id":54},{"value":70,"source":71,"evidence":72},"TypeScript frontend","commenter",[73],{"id":74,"by":75,"text":76},"38975388","paddy_m","Very exciting! I took a quick look and I have a couple of questions. 1. Can you describe your interactive widget story? I see that you integrated altair, and there is some custom…","open_source","launched","team",{"praise":81,"objections":119,"requests":144,"questions":171,"alternatives":183},[82,97,108],{"value":83,"source":71,"evidence":84},"Reactive cells solve Jupyter's hidden state problem",[85,89,93],{"id":86,"by":87,"text":88},"38973994","zengid","Very cool! This is something Jack Rusher cries for in his talk \"Stop Writing Dead Programs\" https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=8Ab3ArE8W3s",{"id":90,"by":91,"text":92},"38973923","bsdz","This is a great idea. I'd been planning to create something similar where cells are topologically ordered based on their dependency structure; although I was thinking perhaps to…",{"id":94,"by":95,"text":96},"38981178","stuaxo","This is good, I've been waiting for something like this to solve the issue of determinism in notebooks.",{"value":98,"source":71,"evidence":99},"Plain Python file format is git-friendly",[100,104],{"id":101,"by":102,"text":103},"38973974","simonw","This is amazing. I'm a big user of both Jupyter notebooks and Observable notebooks (https:\u002F\u002Fobservablehq.com\u002F) and the thing I miss most from Observable when I'm using Jupyter is…",{"id":105,"by":106,"text":107},"38975276","yowlingcat","This is very cool. I think I need to play around with this a bit more to wrap my head around the reactivity element, but the basic shift of ipynb to standard Python would be such…",{"value":109,"source":71,"evidence":110},"Welcome alternative to Jupyter",[111,115],{"id":112,"by":113,"text":114},"38974414","j0e1","This is a welcome alternative to Jupyter Notebooks\u002Flab- great work! One thing that would be nice is an ability to see previews on GitHub of the Marimo notebook (like Jupyter…",{"id":116,"by":117,"text":118},"38977800","nnx","Very interesting project, a breeze of fresh air and welcome competition to Jupyter. I guess it's still very early but the onboarding for Mario VSCode is not great at the moment,…",[120,130,137],{"value":121,"source":71,"evidence":122},"Package reproducibility not yet solved",[123,127],{"id":124,"by":125,"text":126},"38972832","bluish29","That's one interesting project. As someone who relies heavily on collaboration with people using Jupyter Notebook. The most annoying points about reproducing their work are the…",{"id":128,"by":11,"text":129},"38972944","Yes, the second half of reproducibility is for sure packages. A solution for reproducible environments is on our roadmap…",{"value":131,"source":71,"evidence":132},"Reactivity misses in-place object mutations",[133],{"id":134,"by":135,"text":136},"38977995","petters","Looks really impressive! But state is not tracked perfectly. Sometimes you have to manually re-run the cell. For example if one cell defines a dataclass d and another cell…",{"value":138,"source":71,"evidence":139},"Lacks interactive debugger and variable viewer",[140],{"id":141,"by":142,"text":143},"38976776","chris_nielsen","I love this, but Im using DataSpell from JetBrains at the moment because it has 2 killer features: ``` 1. Variable viewer so I can see the current value of all variables in…",[145,160,164],{"value":146,"source":71,"evidence":147},"WASM\u002FPyodide browser version",[148,152,156],{"id":149,"by":150,"text":151},"38972860","SushiHippie","Looks cool! Have you looked into WASM? Something like a jupyterlite [0] alternative for marimo? And are there plans to integrate linting and formatting with ruff? [1] [0]…",{"id":153,"by":154,"text":155},"38978029","wisty","Cool. On a side note, I think the old Jupytext extension is hugely underrated. It lets Jupyter run a .py file (with markdown notes as comment in the file, displayed as notes in…",{"id":157,"by":158,"text":159},"38981625","robsh","It would be amazing if it could be deployed with pyodide\u002Fwasm as an alternative to a Python web server. Truly a standalone interactive notebook, hosted with plain html.",{"value":161,"source":71,"evidence":162},"Ruff linting and formatting integration",[163],{"id":149,"by":150,"text":151},{"value":165,"source":71,"evidence":166},"Editing the file externally with live update",[167],{"id":168,"by":169,"text":170},"38975302","exe34","That's amazing! Can I edit it in another editor, save the file and have it updated live in the browser notebook? Or does it have to recompute everything?",[172,176],{"value":173,"source":71,"evidence":174},"Relationship with Jupyter ecosystem and widgets",[175],{"id":74,"by":75,"text":76},{"value":177,"source":71,"evidence":178},"Converting existing Jupyter notebooks with custom JS and CSS",[179],{"id":180,"by":181,"text":182},"38995760","garfieldnate","The readme says that I can convert Jupyter notebooks, but to what extent does this actually work? What if I've imported custom JS to render mathjax or added custom CSS? What if…",[184,192,196,203,210],{"value":185,"source":71,"evidence":186},"Jupyter",[187,188],{"id":124,"by":125,"text":126},{"id":189,"by":190,"text":191},"38973601","dimatura","I already use jupytext to store notebooks as code but the improved state management and notebook-as-app features are pretty compelling and I'm trying it out. Unfortunately, I'm…",{"value":193,"source":71,"evidence":194},"Observable",[195],{"id":101,"by":102,"text":103},{"value":197,"source":71,"evidence":198},"Streamlit",[199],{"id":200,"by":201,"text":202},"38973845","mondrian","Looks cool. This is kind of like streamlit, which (I think) tried to escape the limitations of notebooks by giving you an API to quickly make a shareable app with sliders\u002Fcharts…",{"value":204,"source":71,"evidence":205},"Pluto.jl",[206],{"id":207,"by":208,"text":209},"38974530","carterschonwald","Awesome! I’ve been wanting this sort of thing for a long time. But I’ve only been aware of the Julia tool pluto",{"value":211,"source":71,"evidence":212},"Quarto",[213],{"id":214,"by":215,"text":216},"38978572","Onawa","Aren't many of the issues with Jupyter being mentioned in this thread solved by Quarto? I have been advocating for it's use more at work, and NIH has even started offering…",{"comments":218,"answered":45,"key":219},10,[220,221,224],{"id":128,"text":129},{"id":222,"text":223},"38973178","Oh, sorry for not being more clear. That's not the one. It's \"Package management: make notebooks reproducible down to the packages they use\":…",{"id":225,"text":226},"38975844","1. We don't have a public plugin API yet, but we will in the future. Our (internal) plugins are represented as custom elements: Python writes the HTML (e.g., `\u003Cmarimo-vega ...>`…",{"commenters":228,"max_depth":229,"maker_replies":218,"first_comment_mins":230,"lifespan_hours":231},68,9,46,54,[233,235,239,243,246,249,253,255,259,262,264,265,267,268,270,273,275,277,279,281,283,285,288,290,293,296,299,302,304,307,310,313,316,318,321,324,327,328,329,332,334,337,340,341,343,345,347,349,352,353,356,359,363,366,368,370,373,375,378,382,385,388,390,393,396,400,403,408,410,412,415,417,420,422,425,427,431,433,435,439,442,444,447,450,452,456,461,464,466,467,469,471,473,477,481,485,489,493,497,501,503,507,511,515,520,523],[101,40,45,234,102,40],"project\u002Fpositive\u002Fdesign",[236,40,45,237,238,40],"38974255","maker\u002Fpositive\u002Fnone","mscolnick",[240,40,45,241,242,40],"38975286","project\u002Fpositive\u002Fnone","arthurwu",[244,40,45,241,245,40],"38975711","mind-blight",[247,40,18,248,238,40],"38975956","project\u002Fneutral\u002Fnone",[250,40,40,251,252,40],"38975632","other\u002Fneutral\u002Fnone","LoulouMonkey",[254,40,40,251,102,40],"38976456",[256,40,18,257,258,40],"38977978","maker\u002Fneutral\u002Fnone","YousefED",[260,40,40,261,252,40],"38978419","commenter\u002Fneutral\u002Fnone",[124,42,18,263,125,40],"project\u002Fmixed\u002Fdesign",[128,42,40,248,11,42],[266,42,18,248,125,40],"38973090",[222,42,40,257,11,42],[269,42,45,237,125,40],"38973294",[271,42,40,261,272,40],"38973440","aidos",[274,42,40,261,125,40],"38973645",[276,42,40,261,272,40],"38973816",[278,42,40,251,125,40],"38974038",[280,42,40,261,272,40],"38974482",[282,42,40,261,125,40],"38974546",[284,42,40,261,272,40],"38974722",[286,42,40,261,287,40],"38980233","pastorhudson",[289,42,40,261,75,40],"38975448",[291,42,40,261,292,40],"38978540","d0mine",[294,42,40,261,295,40],"38979135","graemep",[297,42,40,261,298,40],"38977464","ShamelessC",[300,42,40,251,301,40],"38976290","bmitc",[303,42,40,251,298,40],"38977469",[305,42,40,251,306,40],"38978448","331c8c71",[308,42,40,261,309,40],"38979442","actuallyalys",[311,42,40,251,312,40],"38980821","n8henrie",[314,42,18,248,315,40],"38978639","gcarvalho",[317,42,40,251,306,40],"38978422",[319,42,40,251,320,40],"38988030","BerislavLopac",[322,33,18,263,323,40],"38975254","Micoloth",[325,33,40,251,326,40],"38975366","smacke",[74,18,18,248,75,40],[225,18,40,248,11,42],[330,46,45,241,331,40],"38976970","ingenieroariel",[153,45,45,333,154,40],"project\u002Fpositive\u002Fidea",[335,336,45,237,326,40],"38974353",6,[116,338,42,339,117,40],7,"project\u002Fcritical\u002Fexecution",[149,34,18,248,150,40],[342,34,40,248,11,42],"38972913",[344,34,45,237,150,40],"38973043",[346,34,18,248,150,40],"38973146",[348,34,40,257,11,42],"38973331",[350,34,45,241,351,40],"38973465","prabir",[105,229,45,333,106,40],[354,218,40,251,355,40],"38973639","peter_l_downs",[357,39,40,251,358,40],"38977539","rossjudson",[360,361,18,248,362,40],"38973141",12,"hedgehog",[364,361,18,248,365,40],"38973249","noahlt",[367,361,40,248,11,42],"38973422",[369,361,40,251,326,40],"38974405",[371,361,18,372,362,40],"38977886","project\u002Fneutral\u002Fidea",[86,374,40,251,87,40],13,[376,374,40,251,377,40],"38975592","JayCeeM",[379,380,42,339,381,40],"38988453",14,"t0mk",[214,383,42,384,215,40],15,"project\u002Fcritical\u002Fnone",[386,383,45,333,387,40],"38996061","TtjM",[90,389,45,333,91,40],16,[391,389,40,392,11,42],"38974013","maker\u002Fpositive\u002Fdesign",[157,394,18,395,158,40],17,"project\u002Fneutral\u002Fexecution",[397,398,18,372,399,40],"38976590",18,"bitsrat",[401,398,18,402,238,40],"38976858","maker\u002Fneutral\u002Fidea",[404,405,18,406,407,40],"38987431",19,"project\u002Fneutral\u002Fdesign","rrr_oh_man",[409,405,45,392,238,40],"38987777",[189,411,45,333,190,40],20,[413,411,40,251,414,40],"38979260","aldanor",[168,416,18,395,169,40],21,[418,416,40,419,11,42],"38975785","maker\u002Fneutral\u002Fexecution",[141,421,18,406,142,40],22,[423,421,18,424,238,40],"38976813","maker\u002Fneutral\u002Fdesign",[426,421,45,237,142,40],"38977778",[428,429,18,395,430,40],"38978154",23,"mvelbaum",[200,432,45,333,201,40],24,[434,432,40,402,11,42],"38973981",[436,437,42,438,135,40],"38979539",25,"project\u002Fcritical\u002Fdesign",[440,437,18,424,441,40],"38980226","jkl5xx",[443,437,42,438,125,40],"38981867",[445,437,40,446,135,40],"38984872","commenter\u002Fneutral\u002Fdesign",[448,31,18,372,449,40],"38974129","esafak",[451,31,18,419,238,40],"38974933",[453,454,18,372,455,40],"38975709",27,"bravura",[457,458,18,459,460,40],"38983045",28,"project\u002Fneutral\u002Fdocs","mbrezu",[462,458,45,463,238,40],"38983235","maker\u002Fpositive\u002Fexecution",[180,465,18,395,181,40],29,[112,32,18,395,113,40],[134,468,42,339,135,40],31,[94,470,45,333,95,40],32,[207,472,45,333,208,40],33,[474,475,45,333,476,40],"38975853",34,"ametrau",[478,479,45,241,480,40],"38974146",35,"rurban",[482,483,45,234,484,40],"38988648",36,"zhenyakovalyov",[486,487,18,459,488,40],"38975610",37,"aredox",[490,487,18,491,492,40],"38975701","maker\u002Fneutral\u002Fdocs","derHackerman",[494,495,18,372,496,40],"38974352",38,"Beefin",[498,499,18,406,500,40],"38975183",39,"krawczstef",[502,499,40,491,11,42],"38975267",[504,505,45,333,506,40],"38974084",40,"elijahbenizzy",[508,509,45,333,510,40],"38975253",41,"aqader",[512,513,45,241,514,40],"38976786",42,"jwilber",[516,517,42,518,519,40],"38972594",43,"project\u002Fcritical\u002Fdocs","warthog",[521,517,18,459,522,40],"38972660","pvg",[524,517,42,518,365,40],"38972741",[],[527,532,537,541,545,549],{"id":528,"name":529,"points":530,"category":531},"39022693","sitinshade.com",963,"consumer_social",{"id":533,"name":534,"points":535,"category":536},"38951172","GodotOS",534,"productivity",{"id":538,"name":539,"points":540,"category":20},"38987109","#!\u002Fusr\u002Fbin\u002Fenv docker run",496,{"id":542,"name":543,"points":544,"category":536},"38988019","Citadel",338,{"id":546,"name":547,"points":548,"category":20},"39027543","Htmldocs",226,{"id":550,"name":551,"points":552,"category":553},"39030510","Shadeup",179,"languages",false,"v2",{"id":557,"name":5,"line":6,"ai":554,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":558,"top":18,"kw":559,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":560,"url":9,"mix":561,"praise":83,"objection":121,"sub":21},38971966,0.27,[24,25,26,27],"5503350000003354535303153553531342553351",[31,32,33,34],1794036648092]