10 July 2017

My Favorite IDE

Clearly it would be emacs.

When it isn't emacs its vim.

Be reasonable?

OK, I use PyCharm and RubyMine a lot these days. I think its because I've gotten lazy, or maybe tired. IDE's are great, they have refactoring tools, they can find things like method usage quickly for you. If you have a huge project they are invaluable. 

The Complaint

IDEs are too slow. I haven't found a way to total it up yet but I spend a lot of my day waiting for things. Waiting for the IDE to start, waiting for the IDE to index the project, waiting for the IDE to load dependencies. 

Solutions

I don't have any really great solutions but here is what I've been doing. First, I offloaded as much as I could to other machines. I have four at the moment, but I really use three of them. I use my main machine for my IDE. Most everything else is running on another machine. That is, slack, Messages, email, everything I don't have to have right in front of me. So most of the time I have an IDE or two, Chrome, and several services like RabbitMQ and Postgres running. This works OK, but it isn't the best solution. 

Next, I leave my IDE open all the time. I practically never shut it down. That gets me past start up time. PyCharm starts and opens a repo in about 15 seconds on my workstation. Not bad. But if I have to keep reopening things, that chews up several minutes of my day. So I trade RAM for speed. Once a repo is open, I don't close it. 

As a consequence I have to keep my browser tabs to a minimum. Right now I have 30 open tabs in Chrome. Some days I'll hit 100, but I notice that chews up all my memory -- forcing me to close tabs or IDEs. Tabs always loose. I've started using a Tab Suspender plugin to calm Chrome down. 

I also use tmux to minimize the number of terminal windows I have open. I don't think I really save that much memory by doing this but it does cut down on clutter.

What the world needs...

First off, Mac Book Pro's with 32Gb of RAM. Second, blazingly fast drives and CPUs. Third, the thing we can control a bit more, really fast IDEs. And lastly, core tools that are quick. 

Things like PIP and gem are slow. About one third of build time is spent on dependencies (when building clean). 

At least another third are spent on static analysis tools like pylint, pep8, bandit, etc. 

As a community we need to find a way to make these tools faster and easier to use.