I recently applied for an internship (I won’t say where but I did link my blog on the cover letter, so if you are reading this, you know who you are.). In the job posting I noticed the following bullet point under Desired Qualifications:

  • Respectful, strong opinions about text editors

So I did what any good engineer would do and I answered the question in their Additional Information box. I ended up having so much fun doing this that I decided to turn it into a blog post.

First of all, any and all text editor choices are valid (except writing code in Google Docs, if you are doing that, then please re-evalueate the choices you made to end up in that position). It’s really more about using whatever you feel most comfortable with. That said, I am a Vim (Neovim) user and as you might expect I have some opinions. I have tried a number of text editors over the years, so let’s briefly go over those.

In chronological order:

  1. Atom - Really solid text editor, but I didn’t feel that it was anything particularly special at the time. Though this may be due to the fact that I was still very much a beginner when I was using it, as I know a lot of people who absolutely loved Atom before it died in late 2022.
  2. Eclipse - This was my first IDE it made setting up Java projects easier, but I don’t really have any other praise to give it, I never really touched the community plugins/extensions since I mainly used Eclipse as training wheels for Java.
  3. IntelliJ & Pycharm - Two sides of the same coin, the Jetbrains IDE’s are great, and I still use them (with a Vim plugin) whenever I need more than just a text editor. However this is rare due to the depth of the Neovim plugin ecosystem, which I will get to later. Overall, I think JetBrains make great products.
  4. VSCode - I used VSCode for a while (Almost 2 years) I liked it for the most part, but similar to Atom I just never felt too strongly about it one way or another, except that it was kind of slow.
  5. Vim - Vim is an awesome piece of software, I used it for a little while, and once I got used to the keybindings, there was no going back.
  6. Emacs - I had heard people raving about how amazing Emacs was so I installed DOOM Emacs, because I needed EVIL mode for Vim emulation and didn’t want to commit to configuring everything from scratch. After using it for a while I just didn’t really see it, as a Vim user I feel obliged to say something like “Emacs is a really great operating system, all it’s missing is a good text editor”. On a more serious note Emacs is really cool, and I really want to love it, but it is just not for me.
  7. Neovim - After my brief journey into the world of Emacs I returned to the safety and familiarity of Vim… well, sort of. I wanted to try Neovim because I heard it was faithful to it’s predecessor while solving some of the headaches, in particular those caused by configuration. Configuring my editor with Lua has been a joy, and you can take a look at my config files here if you are interested. I think this is the end of my editor journey, at least for now.

Question for the Audience

The one thing I feel like my Neovim config is missing is the ability to work seamlessly with Jupyter notebooks. If anyone reading this has a good solution, please leave a comment!

Final Thoughts

This was a really cool thing to see on a job posting and it made the application feel extra engaging. I really hope to hear back from someone at the company, even if it’s just to nerd out about text editors.