Atom [ insert physics pun ]

I don’t like IDEs. Every IDE is a new system. No matter how powerful it is or how intuitively its features are implemented, it will still look different, feel different, and be different. It will be new. I work with a plethora of languages on a regular basis, switching between them frequently. IDEs are specialized for a single language. Using a specialized IDE for each one is simply unfeasible. Therefore, my only choice is to use an editor that, while at times may be slightly less powerful than a full IDE, can gracefully handle any language I throw at it and allow me to customize to my heart’s content.

To be honest, I don’t really mind. IDEs tend to do too much; a programmer should know how his language of choice works. You would be amazed at how many Eclipse users can’t compile a Java program using a terminal.

So then what do I use you ask?

The before

For the last few years, the answer has been Sublime-Text. It’s a beautiful editor with a good collection of features and even more plugins. It has it’s problems, though. For one thing, it has always been a bit temperamental. Sublime would have odd bugs, never anything significant or consistent, but it often wouldn’t work the way it should. Also, the plugins system sucks. Now, before you burn me at the stake, let me explain. Sublime has a lot of useful plugins, but they are limited in scope and hard to write. Sublime doesn’t provide enough access to GUI elements and it’s api is clunky and punishes the developer for anything imaginative. All this comes together for an experience that, while satisfactory, doesn’t have that last bit of oomph to reach satisfying.

The after

Enter Atom. Atom’s weakness is also it’s strength: it’s built using web languages. I first came across Atom a while back when Github first released it to the public. At the time, while it was shiny and showed potential, it was just too slow for typical use. That’s the problem with building an application from Javascript: it’s slower than loading a picture of a hare from a floppy disk. But that was then, and this is now. Atom is fast now. Not quite as fast as Sublime, but faster than some other editors I’ve used.

Now that the Atom devs have somehow bent reality and conquered their speed problems (Javascript powered warp drive anyone?), we can benefit from the other side of the equation. Plugin development in Atom is simple, powerful, and well documented. Simple things stay simple to implement, yet the possibility is there for so much more.

I’ve been using Atom for about a week so far and it has convinced me of its prowess. Not only has my Sublime workflow been transfered over nicely, but I’ve been able to get Atom to do things I could never get Sublime to do.

Atom is more extendable and shinier than Sublime with a more refined GUI and faster development.

Fancy stuff

In my short time with Atom, I have found quite a list of useful plugins. Here are some of the more useful for your perusal:

  • build / build-npm-apm
    Define a command to compile/run your project. You can define a custom command or choose from a lot of modules for common build systems. I, myself, have only used the npm module so far.

  • color-picker
    Right click on colors to bring up this nifty little tool. I use this more than I thought I would.

  • custom-invisibles
    I have gotten very used to seeing my tabs and spaces and while atom can draw ‘invisible’ characters out of the box, there was no way to limit that to only spaces and tabs.

  • file-icons
    All hail the eye candy!

  • git-control / git-time-machine
    GUI git! In the editor! I know, I know, ‘real developers use the terminal’, but it’s just so shiny.

  • highlight-selected / sublime-style-column-selection / less-than-slash / minimap
    Needed sublime features.

  • markdown-writer
    I’m using it to write this right now.

  • mixed-indent-warning
    I wanted this. Now I have it. I will never commit a file with inconsistent indenting ever again.

  • remote-sync
    FTP on the sidebar. There are a few other packages that provide FTP access, so use whatever suits your fancy.

  • susave
    The ability to save files as root makes life just that much easier.

  • sync-settings
    So I don’t have to remember to install all these plugins at work. Setup could be a little easier, but still a good solution.

  • tablr
    Fancy spreadsheet interface for CSV files.

  • terminal-plus
    Terminals. I like terminals.