While I've been a long-time Vim user and advocate (and Emacs long ago), over the years Visual Studio Code (VS Code) has become my go-to IDE for several reasons. As a long-time Vim user, I appreciate the efficiency and control that Vim offers. However, VS Code brings together the best of both worlds. It provides a modern, feature-rich interface while also offering a Vim emulation mode. This means I can leverage my Vim keybindings and workflows within a more robust development environment. But I don't need to anymore, really.
VS Code's IntelliSense feature is a game-changer. It offers smart completions based on variable types, function definitions, and imported modules. This feature alone has saved me countless hours of time. The built-in Git support is another major plus. Being able to stage and commit changes, create new branches, and view diffs right from the editor with a modern-day UI is incredibly convenient.
The extensibility of VS Code is another reason why I love it. There's a vast marketplace of extensions that can add new languages, themes, debuggers, and more to the editor. From BASH intellisense to Docker and everything else, quick and easy...it's a game-changer. It's easy to customize VS Code to fit my exact needs. And despite all these features, VS Code remains fast and responsive, which is a testament to its well-designed architecture.
As for Jupyter notebooks, they have transformed the way I work with Python, especially for data analysis and visualization tasks. The ability to interleave code, outputs, and explanatory text in a single document is incredibly powerful. I can experiment with code, see the results, and make adjustments in a very efficient and interactive way. This is a stark contrast to the traditional edit-run-debug cycle that can be time-consuming and disruptive.
Jupyter notebooks also make it easy to share my work with others. The notebooks are self-contained and can be rendered in a web browser, making them accessible to anyone, regardless of their development environment. This has made Jupyter notebooks an essential tool for collaborative projects and for presenting my work in a clear and understandable way. I've started adding one by default to every repo I work in.
All for the wonderful low price of: free.
Next: Environment and Package Management