If you're a productivity freak like me you probably found yourself in the following situation (presumably in the last week):
You have a task to complete, you sit down, open up your laptop and suddenly, it happens.
That annoying little thing you have to do every single time. It might happen once an hour, once a day, maybe once a week, but it drives you bananas.
It could be something small like inserting your MFA codes, closing a pop-up or even switching to "normal" mode on vim.
It could be something more time consuming like rearranging your displays layout after replugging your Mac, changing your connection string to a readonly production database, or restarting your environment when changes are not affecting it.
It doesn't matter, the point is it's something you're doing instead of what you'd rather be doing.
8 months ago I decided to stop the madness. I started reserving 1 hour a week to get rid of these little nuisances.
So there are many tools that help me work towards my goal of ultimate efficiency. Some of them are free, some of them cost some bucks, heck, I even paid 50 bucks for one of them. You don't have to use the ones I suggest, and for every paid one I'm sure you can find a free one or create one yourself.
BetterTouchTool is the first tool I used to customize my development experience, I installed it even before starting my current position (I received my laptop beforehand) and I can't believe how much I use it every day.
In a nutshell - it allows you to customize everything "input related" in your Mac, including your Magic Mouse, trackpad, keyboard and even your Touch Bar (if you use a compatible version)
Karabiner is one of those tools I expect every OS to have built in. It allows you to remap any key on your keyboard to do anything you want. Why isn't it a standard??
Alfred is probably the first tool I'll ever go to when trying to solve a workflow issue. Alfred (a free tool, massively extended by a paid "Powerpack") has way too many functions to tell you about here, but it's essentially Spotlight on steroids. It allows countless customizations and features out-of-the-box improvements that'll make you wish you met it before.
If you have a Macbook pro with a Touch Bar, sooner or later you probably thought to yourself: "Damn, that is one piece of unutilized potentiel".
And it is, Apple definitely dropped the ball on that front.
Luckily, I used BetterTouchTool to customize it and make it not suck!
Production / green
Development block indicates what is the current state of my
database.yml file (in rails based applications your connection strings are kept there), this allows me to know whether I'm working against my local DB or readonly production DB in a glance.
I also added a block that shows me my current internal IP address (useful when I want to share a link to a local server with a colleague), a mute button, a DateTime block with seconds (important when wanting to get a feel about query performance) that also takes me to my calendar on tap, and a "Coffee Break" button that locks my laptop.
Obviously when Spotify or Youtube are playing I have a block appear in the middle with some useful functions.
Another cool feature I utilized is 2 fingers drag to control brightness, and 3 fingers drag to control volume.
If you know me, you probably know I have a mild case of keyboard fetish. I build them, I collect them, I try to make the ones that best suit my style.
One thing I have to do on every system I use is remap my Caps Lock key to
ESC, and especially in this specific Mac. I mean, who on earth would prefer § over a physical
If you use vim you know how important it is to have the
esc key as close to you as possible, and as I started using it more and more I realized I'm using it for things other than vim. Closing pop-ups, blurring inputs, opening the console in Chrome devtools. Escape is the unsung hero of keys.
I use Karabiner-Elements to remap the useless Caps Lock (it's 2019, if you use Caps Lock it's time for some re-education) into an
esc. Can't get easier than that.
In case you haven't read this excellent article by Steve Losh, I highly recommend you do, but the customization I liked (and used) the most ever since I read it is the "Space Cadet Shift Parentheses".
It turns your
left_shift key into a
( and your
right_shift key into a
) if they're pressed briefly, and treats them as normal shift modifier keys when held and combined with another key.
This allows me to type parentheses with one keystroke, which makes much more sense than the traditional way of
9, as I probably use parentheses hundreds of times a day.
This is truly a game changer. I specifically use Alfred's clipboard from the Powerpack binded to a
v shortcut, but you can use the free software "Jumpcut" instead.
What this essentially does is keep a history of your copied items, including text and images.
Originally, I started using it to stop these "F*ck, I copied over that super important thing I had in my clipboard and now I have to go back and copy it again" moments I kept having, but as time went on I started using it as an actual tool.
I copy multiple items from one application, then go to another application and paste them as needed without having to switch back.
If you have a Mac and 2 displays you're probably familiar with the issue.
You disconnect your laptop to go to a meeting, and when you come back your screens are all messed up, the spaces go to wherever they feel like and you're left there dragging windows from one display to the other for 2 minutes.
What I discovered is that you can change your main display 3 times (if you do it in the correct order) and the displays will go back to where you want them!
This in itself is a huge time-saver, but I wanted to take it to the next level, so I created an Alfred workflow.
A workflow is a set of actions, these can be scripts, changes in settings, push notifications and a ton of other actions, executed in order and triggered by a keyword in Alfred or a keyboard shortcut.
Using the free cli tool
displayplacer, I was able to record the current displays state after each "main display change", and after I had all 3 I chained them together in a workflow triggered by the keyword arr (short for arrange).
Now every time I sit at my desk, I plug in my displays, press
space (my Alfred shortcut), type
arr in, and the displays are fixed!
The amounts of data we work with don't allow us to pull the data to our local machine and work on it, so we sometimes have to change our connection string (our
database.yml file) to connect to a read-only replica of our production DB to see how the data looks on a new dashboard or what not.
This process happens about 6-7 times a day, and every time I have to open the
database.yml in my editor, uncomment / comment the lines of the production DB, save the file and restart my
rails server (which we'll solve later)
I created an Alfred workflow that simply replaces my
database.yml with the correct one according to the command I typed in, and saves a file stating which file is currently in use (remember that red/green block in the Touch Bar?)
Anyone who developed some node.js knows
nodemon, a great utility that allows you to run a node server, and restarts it whenever the files change.
But did you know
nodemon can work on any cli tool and watch any file type?
rs alias (
rails server) to
alias rs="nodemon --watch config -e rb,yml --exec \"rails server -b 0.0.0.0 -p 3002\"
Allows me to run my server, and whenever a file in the
config directory with an
yml extension is changed, it restarts the server! No more manual restart on
Whenever I need to type the master password of my Mac I'm annoyed. Why? Because I have TouchID! Why should I type a password instead of biometrically identifying myself?
I discovered that I can add a simple line to the
sudo PAM (Pluggable Authentication Module) and from now on every time I need to
sudo a command I just have to put my finger on the sensor!
Just add the following line to the top of your
auth sufficient pam_tid.so
For this one I'll refer you to this fantastic workflow that inspired me, but in short - you can create an Alfred workflow that pastes an MFA code without you having to open your phone.
To keep my accounts secure (there's a reason for MFA after all) I changed the script permissions to "root only" and ran it as
If you remember from #8, sudoing on my Mac requires a fingerprint, and this allows me to protect my MFA tokens with a fingerprint, while not having to reach for my phone every time GitHub invalidates my session.
Our development environment is semi-complex, and personally I like to work in a specific way.
My terminal is Hyper, customized exactly as I like it, I have one tab split into 3 sections, one for
docker-compose, one for our
npm transpiler, and one for the
Other than that tab I have 2 more tabs, one for a
rails console and the other for
Instead of opening all of these tabs and typing all of these commands every time I'm starting my devenv, I created an Alfred workflow triggered by the keyboard shortcut
b that does all of that for me!
Not all of my optimizations have a story behind them, some are trivial and are still huge time savers
Use shell aliases.
Whenever you have a long command you have to type more than once in a lifetime, throw it into an alias. You'll be surprised by how much you use it.
Apart from aliases there are a lot of customizations to do in your terminal. From shell customization including
fzf and history auto-complete to better tab management and better remoting tools (like
The terminal is your friend and you spend a lot of time in it. Treat it nicely.
I know it's hard to get used to compared to Windows windows, but honestly spaces are the best way to get around a Mac. Take the time, learn to use them and learn all the gestures. Navigating spaces is way faster than dragging windows around.
You can drag with 3 fingers instead of click and dragging on the trackpad. Turn on this gesture, your fingers will thank you!
You can find it in Preferences > Accessibility > Mouse & Trackpad > Trackpad Options... > Enable dragging > three finger drag.
I have many more optimizations just like the ones posted here, if you'd like me to create a follow-up post just say 🙃
You spend hours in front of your computer, make sure every minute counts.