Replace Jupyter with Emacs Org Mode: Unleash the Power of Literate Programming

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • org-ref

    org-mode modules for citations, cross-references, bibliographies in org-mode and useful bibtex tools to go with it.

  • I love org mode for scientific writing (especially with org-ref [0]) but it’s just not very convenient for collaborative projects because there are very few emacs users (in my field at least). Overleaf has been workable in my experience, but I still get pushback sometimes.

    A diff-aware org-latex import would be amazing for this actually, like if pandoc could do tex -> org but align all the code blocks / generated figures

    [0]: https://github.com/jkitchin/org-ref

  • emacs-jupyter

    emacs plug-in to run python code inside tex or markdown buffer

  • With my Pymacs add-on you could run Python code while editing markdown or tex files

    https://github.com/burakbayramli/emacs-jupyter

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • jupyter

    An interface to communicate with Jupyter kernels. (by emacs-jupyter)

  • For anybody following along with the examples, a few points/tips that might help newcomers:

    1. (By default) before you can use Python source blocks, you need to have the Org Babel Python functionality loaded which is most easily done by evaluating the elisp (require 'ob-babel), but there are other ways also [1].

    2. The first example, which uses the print function, will not output anything because the Python blocks by default are evaluated inside a function body and the return value is returned to Org [2]. To return the printed output instead, you need the header argument ":results output". There is an example of this syntax later in TFA.

    3. If you are serious about replacing (or complementing) other Jupyter tools with Org mode, you might want to eventually look at emacs-jupyter [3], which provides a more advanced handling of outputs and also supports other (i.e. non-Python) kernels.

    Also, I don't think I've ever seen anything like the debugging example and when I tried to replicate it out of curiosity, the block simply failed with a bdb.BdbQuit exception. Am I missing something? What is supposed to happen?

    [1] https://orgmode.org/manual/Languages.html

    [2] https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-...

    [3] https://github.com/nnicandro/emacs-jupyter

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts