We all have our favorite tools, yet I find myself finding useful apps and services in the most unexpected places. These tools help us get our jobs done. Seeing as it's the end of the year, I asked a few of our software engineers to highlight a tool they found especially useful in 2015.

Aquamacs

by: Sayem Khan

2015 was the year I first switched to Aquamacs from regular Emacs, along with using a Mac instead of Fedora as my normal development setup. I thought I would hate it at first, but I couldn't be happier. My normal Emacs config has no menu items, no scrollbar, and is just a black screen with green text. I don't use the mouse one bit when I'm on my editor, like many Emacs users. Aquamacs, on the other hand, has a very OS X-like UI; it has a navigation bar at the top, along with a scrollbar, and it lets you organize your work in tabs, which is pretty cool. All three of those things were pretty new to me, but they've speeded up my productivity.

Bugsnag

Also by: Sayem Khan

Bugsnag has been an indispensable tool in our team's day-to-day development, and I was first introduced to it earlier this year. It's been a real pleasure to work with, and support from their team has been great. Bugsnag automatically notifies you of exceptions caught in production, and it presents it all in a nice dashboard for your team to tackle them one by one. It also has a handy API which you can use to gather more details on the root cause of any exception, filter specific exceptions by their class type, and also customize it for your QA and staging environments. I highly recommend Bugsnag for your team's workflow.

tmux

by: Ben Fischer

If you plan on running a process on a remote box that will take a long time, tmux is a great tool. It allows you to run a process without keeping your ssh connection open. If you just run a process in the background, the system will kill it if your connection dies. But with tmux, you can disconnect from a box and reconnect to it later to check up on your process without worrying about it being interrupted.

httpie

by: Rodrigo Kochenburger

HTTPie (pronounced aych-tee-tee-pie) is a command line HTTP client. Its goal is to make CLI interaction with web services as user-friendly as possible. It provides a simple http command that allows for sending arbitrary HTTP requests using a simple and natural syntax, and it displays colorized output. HTTPie can be used for testing, debugging, and generally interacting with HTTP servers.

Vim

by: Daniel Nill

2015 was the year I learned how to vim. Everyone's heard of it and it has many proselytizers, but if you've never taken the week or two to force yourself to use it as your primary editor, the learning curve can seem very intimidating. If you want to sincerely try out vim, be prepared to sacrifice some productivity for the first week. I suggest you learn to move around using the vim quick keys and then start exploring some popular packages to make your development experience even faster and easier. After that, continue trying to learn a new shortcut or tool in vim every week. After using vim for a little under a year, sublime text, my editor of choice for the previous 3-4 years, seems tediously slow.

ngrok

by: Jason Seifer

Securely tunnel to localhost with ngrok. This is practically a necessity when testing external API callbacks locally - just run “ngrok [port]” and you get an external address that can be used to view local changes on the web.

htop

by: Mujtaba Badat

Having to track down why your process is unexpectedly dying and a server becoming unresponsive isn't a frequent occurrence, and that can make it hard to know where to start. When it happened to me, it was challenging to figure out what was going on without the right tools. A coworker suggested htop and was nice enough to show me how to use it (hint: it's dead easy). With a simple command I was able to watch the total memory usage grow until the box ran out of resources. After isolating a few things, it was obvious that a gem we were using for concurrency was leaking memory like an umbrella made of tissue paper. Once the gem was swapped out, the htop dashboard made it simple to verify an improvement in memory usage immediately.

Dash

by: Alejandro Ramirez

Dash downloads documentation for various languages and frameworks, which allows you to access them, even if you're offline. You can easily google search for them, but Dash really comes in handy when your internet is laggy or unreliable. I use Dash when I run into a method I haven't used before. I quickly just filter out by framework and search for the method. The search functionality is very fast.

ECMAScript 6 (ES 2015)

by: Matthew Witek

ECMAScript 6 is the newest version of the ECMAScript standard. This standard was ratified in June 2015. ES2015 is a significant update to the language and the first major update since ES5 was standardized in 2009. Implementation of these features in major JavaScript engines is underway now.

ES2015 has taken note of many of the things we love in coffeeScript. These include arrows acting as shorthand for declaring functions, lexical ‘this’, classes, string interpolation, iterators (for..of, for..in), and language-level support for modules for component definition. Also included is fixed hoisting, the use const for declaring constants, maps, sets, weak maps, weaksets, which provide efficient data structures for common algorithms...the list goes on. Javascript is somewhat more predictable, and that in itself is a big win.

Paw

by: Bruno Miranda

I've been on the hunt for a good looking and fully functional REST client for the Mac for a while. cUrl is great for small requests, but composing larger bodies with form params and bearer tokens in the command line isn't a very pleasant experience. Paw allows me to compose HTTP requests and save them as templates. Support for JSON requests and well-formatted responses makes it a pleasure to use. Paw supports OAuth 1 and 2, Basic Auth, and S3 auth. It also let's you export the request in a variety of formats.

What tools did you adopt in 2015 that helped you get work done? Follow us @dox_engineering if you'd like to be notified about updates to this blog.