<story><title>Using Python and OCaml in the same Jupyter notebook</title><url>https://blog.janestreet.com/using-python-and-ocaml-in-the-same-jupyter-notebook/</url></story><parent_chain><item><author>pcr910303</author><text>The jupyter-notebook interface is IMO, not really suited for interactive development.
Notebooks enforce code to be broken up into pieces of cells to be evaluated. The code must be written in a specific linear way to cater the format of notebooks. Also the distinction between the code &amp;amp; notebooks are too big, it&amp;#x27;s clunky to move between. You get to resort copy-pasting back-and-forth. It&amp;#x27;s always frustrating when I try to do development in an interactive way, and finds out that hooking on jupyter-notebook (whether the language is Python or Node.JS or etc...) is the best way.&lt;p&gt;I think there should be a better integration between editors &amp;amp; REPLs, something like Common Lisp &amp;amp; Emacs SLIME. SLIME queries a server running on Common Lisp to incrementally compile &amp;amp; evaluate code from the editor (like LSP, but not autocomplete queries but evaluation queries). I hope the LSP protocol gains ability to evaluate code for languages with REPLs, it would be awesome if it allows interactive development in multiple editors &amp;amp; multiple languages (like how LSP is facilitating autocomplete).</text></item></parent_chain><comment><author>jph00</author><text>&amp;gt; &lt;i&gt;Also the distinction between the code &amp;amp; notebooks are too big, it&amp;#x27;s clunky to move between. You get to resort copy-pasting back-and-forth.&lt;/i&gt;&lt;p&gt;We have solved this problem by providing 2-way sync between notebooks and libraries, using a system called nbdev:&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;www.fast.ai&amp;#x2F;2019&amp;#x2F;12&amp;#x2F;02&amp;#x2F;nbdev&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.fast.ai&amp;#x2F;2019&amp;#x2F;12&amp;#x2F;02&amp;#x2F;nbdev&amp;#x2F;&lt;/a&gt;</text></comment>
<story><title>Using Python and OCaml in the same Jupyter notebook</title><url>https://blog.janestreet.com/using-python-and-ocaml-in-the-same-jupyter-notebook/</url></story><parent_chain><item><author>pcr910303</author><text>The jupyter-notebook interface is IMO, not really suited for interactive development.
Notebooks enforce code to be broken up into pieces of cells to be evaluated. The code must be written in a specific linear way to cater the format of notebooks. Also the distinction between the code &amp;amp; notebooks are too big, it&amp;#x27;s clunky to move between. You get to resort copy-pasting back-and-forth. It&amp;#x27;s always frustrating when I try to do development in an interactive way, and finds out that hooking on jupyter-notebook (whether the language is Python or Node.JS or etc...) is the best way.&lt;p&gt;I think there should be a better integration between editors &amp;amp; REPLs, something like Common Lisp &amp;amp; Emacs SLIME. SLIME queries a server running on Common Lisp to incrementally compile &amp;amp; evaluate code from the editor (like LSP, but not autocomplete queries but evaluation queries). I hope the LSP protocol gains ability to evaluate code for languages with REPLs, it would be awesome if it allows interactive development in multiple editors &amp;amp; multiple languages (like how LSP is facilitating autocomplete).</text></item></parent_chain><comment><author>snackematician</author><text>Another complaint I have with jupyter notebooks is that they don&amp;#x27;t play nice with git. For this (and other reasons), I much prefer Emacs org-mode, or even running Python in Rmarkdown+Rstudio+reticulate.</text></comment>