Motivation
Jupyter notebooks are powerful tools for visualization and interactive code development, but they lack the full support (e.g. autocomplete, keybindings, refactoring tools) of your favorite code editor. We decided to build and open-source a tool that would combine the advantages of both, allowing the user to:
- Use any code editor to work directly on Python files
- Execute cells in a synced Jupyter notebook
- Work locally as well as on remote servers
And thus Jupyter Ascending was born!
How we use it
We like to use our editor side-by-side with our Jupyter notebook open in a browser (as shown in the GIF below).
After creating our_cool_script.sync.py
, we edit our code directly here, using # %%
to indicate breaks between notebook cells. The code auto-syncs with its paired our_cool_script.sync.ipynb
file. We can forward keyboard shortcuts from our editor for notebook commands like “run cell,” “run all cells,” etc. That way, we see the outputs in our notebook without ever leaving our editor.
Because of the client-server architecture, we can also sync our code to a remote Jupyter notebook. This lets us have all the power of a beefy dev-server with all the convenience of editing code locally.
We have example plugins or configuration instructions for using Jupyter Ascending in Visual Studio Code, PyCharm, and Vim. Adding other editor integrations is easy; since the interface is so simple, it is possible to create editor plugins in almost any editor that supports plugins. For example, our Vim plugin takes less than 50 lines of code to implement (including configuration)!
Your turn
We hope you try it out! We want this tool to be helpful for others, so please feel free to open issues on GitHub or reach out to us directly with questions and feedback. Have fun!
Also, we’re hiring! You see our open roles, and email us at jobs@imbue.com if you find a role for you.