Tuesday, December 30, 2014

Productivity Tools

There are several tools that I use daily to help improve my productivity not only as a developer, but also as a regular computer user. I think it is important to share these types of tools, interesting tidbits, or libraries on a weekly basis because there are just so many new things being created all the time.

For example, I went to a few Ruby on Rails meetups and the first item on the agenda was always "Sharing of Tools and Tips"; here people would share new Ruby gems they had discovered or even share their experiences in solving a recent problem. Another great example is the Ruby Rogues Podcast where after every show, each speaker has picks that they share with the group; these picks aren't always technical, but it's a great way to be cognizant of what is out there. At my current job, we have tech talks every Thursday, but before we start, I reserve 10-15 minutes for sharing of tools and tips or just anything that people found interesting for the week. Usually atleast one thing of interest comes from it, and I think just that makes the entire exercise worth it.

Here are my picks:

1. BetterSnapTool

Ever need to compare two windows side by side, but find it a pain to resize and arrange them all the time? BetterSnapTool makes this simple, and can snap windows to any side you want with just a keyboard shortcut. You can also define custom hotspots where if you drag a window to it, it will resize that window to a custom size that you previously specified. This is a paid tool, but I know that there are probably similar tools that are free.

2. Alfred

Alfred allows you to do a lot of things from your fingertips. With a keyboard shortcut, it launches a spotlight like prompt that lets you search for files, launch applications, and even do arithmetic. I have to admit, I have been using this a lot less lately because the new spotlight in Mac OS X Yosemite is quite good. But I use to use this to launch all my development apps after logging in. You can also launch gmail straight from the prompt. I haven't explored this yet, but there is a PowerPack that you can purchase that allows you to define custom workflows. For example, I could define a development workflow, and it would allow me to launch all of my developer applications with one keyboard shortcut.

I've built a lot of bad habits when using computers since I was young; I use to sit at the computer for 8-12+ hours straight and not take breaks. This has caused me a lot of eye and hand problems as I grew older, and I learned that it is REALLY important to take regular breaks from the computer. This tool helps remind me to take 10 second breaks, every 20 minutes, and 10 minute breaks every 60 minutes. This is all customizable as well. An important exercise I learned from my optometrist is the 20/20 rule, which is every 20 minutes, take a 20 second break and look at something atleast 20 feet away.

A little more heavy weight than the default Notes app, but I like it because I can type up notes for a presentation on my laptop, and then access these same notes on my phone during the presentation. You can also categorize your notes in to notebooks, which has been useful because I create a lot of notes.

4. zsh and the oh-my-zsh plugin

I've mostly just used bash shell since it is the default on Mac OS X, but I recently decided to try zsh because I've heard a lot about it. There are a few nice features in zsh that bash doesn't have, but I wouldn't say anything ground breaking. To list a few:
  • Inline glob expansion: For example, type rm *.pdf and then hit tab.
  • Interactive path expansion: Type cd /u/l/b and hit tab.
  • Customizable prompt configuration options.
What I enjoy the most is what the oh-my-zsh plugin offers. The plugin basically offers a nice way to manage your zsh configuration, but it comes a ton of built in plugins and themes. I mainly just use a theme and a git plugin (which can probably be done in bash too with aliases), but it is still definitely worth checking out. I am sure that I am only scratching the surface. Here is my zsh config if you would like to take a look.

5. Animated Tabs for Chrome

Lastly, I wanted to show an anti-productivity tool that I use quite often in Chrome. Usually I'll want to search for something, so I'll open a new Chrome tab and then I'll see some funny animated gif and then forget what I was doing and even what I was searching for. Although this interrupts my productivity during the day, sometimes it is nice to take a little break and laugh :).

Here are a few other tools that have been recommended to me by colleagues, but I just haven't had a chance to check them out yet:
  • Fluid App
  • Caffeine - Prevent computer from going in to screensaver or turning the display off on battery. This is useful for Skype calls or meetings where you're watching someone else's screen but not interacting with your computer.
  • Dash - For local copies of documentation for various platforms and libraries. Its nice having a local and searchable copy.
  • LastPass - For account management
  • Pauses - An alternative to Timeout
  • Flycut - Clipboard manager
  • Filedart - Speedy file sharing