I love working on projects. I’ve been working on all kinds of projects for 12 years now and over time, some patterns emerged.
Here are some of my non-technical workflows that work very well for me and that I want to share.
Hint: Make sure to check the comments for even more tricks and share your own!
Special Keybindings
Most of the time I work with the keyboard. And as I am a keyboard enthusiast in general I’ve spent some time experimenting with my keyboard setup. I use two tools to customise my key bindings.
Karabiner Elements
The one and only key remapping tool for MacOS. If you are not sure what could make sense, have a look at the gallery of customisations for inspiration.
CapsLock to Ctrl/Esc
I use SpaceMacs in evil mode, so I have a lot of use for Ctrl
as well as Esc
. This custom modification allows me to use the CapsLock
key for both. When pressed alone it acts as Escape
, when pressed together with another key it registers as Ctrl
.
Almost all common modifier actions in my controller can be triggered with my pinky now, without leaving home row and without bending it too much.
Tab/Numeric Keypad
I mostly work with 65%-keyboards or laptop keyboards, but sometimes I miss my num pad, which I used very heavily back in the days.
This modification will remap the alphanumeric keys of my right hand¹ to resemble a num pad. Not perfectly, because the keyboard still doesn’t have an orthogonal layout, but it comes very close.
Better Touch Tool
The Swiss army knife called Better Touch Tool is a productivity allrounder that enables you to manipulate input devices of all kinds on a higher level than Karabiner Elements. Sometimes this means more input lag, but also much more possibilities.
Double tap left shift for emoji menu
Most important for communication: If I double tap Shift
I open the macOS emoji menu. It even includes a search bar, so adding emojis is super fast and easy. 👌 💯 🔥
Backticks as quotes
Especially when editing markdown documents, the backtick is semantically more of a quote for me. That is why I remapped it to Opt+’
, so I have all kinds of quotes in one place.
Maximized Window
It’s a native feature of Better Touch Tool and I use it all the time. I had some problems with other window managers, but BTT works all the time!
App specific Ctrl+j/k up/down mappings
I try to avoid the arrow keys and to stay on the home row as much as possible.
For apps where it makes sense, like Slack, I remap Ctrl+j
and Ctrl+k
(remember CapsLock is remapped to Ctrl) to up
and down
.
Note-Taking
Finding a good note-taking app is the hardest of all.
I used Evernote for about eight years, but I was very dissatisfied with the mobile sync and at some point I just did not accept anymore that they don’t provide end-to-end encryption. Right now I have a semi-satisfying double approach on note-taking:
iA Writer/deft
For loose and fast note taking I use the same folder of markdown files that I either edit in deft/emacs or in iA Writer, depending on the situation.
The good thing is it can be edited easily, works mobile and I can do it with my favourite code editor. But everything beyond plain text is terrible and it is not end-to-end encrypted as I use Dropbox for sync.
DayOne
The only thing that came close to a note-taking app that I wish for is not really a note-taking app, but rather a journal. But it has a nice UI, E2E encryption and can embed multimedia files.
I use it for more sensible data and long-term notes. Searching and organising notes is not as good as in Evernote, but it works fine for most cases.
If you have a better setup (E2E and mobile access is crucial though) — please take my money!
Project Management
Every personal or professional project that grows bigger than one note becomes a Trello board.
I practiced GTD for some years and it highly influenced the way I arrange my lanes on a Trello board. These are my default lanes for most projects:
TODO
Everything that is actionable right now and should be done as soon as possible.
@waitfor
Everything that should be done but is not actionable for me right now. This idea is straight from GTD and every task management system should have something like this.
An example: I want Bob to setup a staging environment, so “Setup Staging Environment” is on my TODO lane at first, because it is actionable (ask Bob) and it should be done asap. But what after I asked Bob to do it? It is not done, I cannot forget about it, but it is also not actionable right now. That’s what I have @waitfor for.
WIP
Don’t forget what you are working on ;)
This makes sense if it is about a project that I only work on irregularly.
SOON
Actionable, not asap, but soon after.
SOMEDAY
Things I want to do someday. In a Scrum backlog, this would be the Icebox. 50% the task will die here, but they won’t clog the lanes I focus on right now.
Knowledge Base/Summary
Important lane for most of my personal projects. There are two kinds of DONE in a project:
First kind is just a chore, an obstacle that you have to get out of your way so you can proceed. This is nothing I need on my board, e.g. in a DONE lane.
The other kind is something where the outcome of the task becomes part of the project, e.g. booking a band for an event. I want to keep this knowledge in a handy manner, that’s why I usually keep an additional lane with given facts about the project. Every card is a fact and contains additional information, links, contacts, etc.
Taking Notes on Mobile
Trello is also the way I take notes with my mobile phone, using a special Email address to add cards to the TODO lane.
This may sound cumbersome, but it is indeed the fastest way I know to jot down three words to remind me later.
My use case is: Get Phone out of pocket, write down three words, put phone back in pocket. Most note taking apps will waste my time booting up, syncing or being stuck with brittle network connections. The only app that works for me on my iPhone with acceptable performance is Apple’s Mail app.
For long time I used to send the notes to myself via mail, recently I switched to sending it to Trello directly. I saved the secret mail address in my contacts as tt
, so addressing the mail is only two keystrokes.
Email Workflow
I used to use Postbox for a long time and I still think it is the best mail client if you are a power user and have to compose a lot of mails.
Right now, I consume a lot of mails, but actually almost never write one on my own. That is why I switched to AirMail, which has good keybindings and is generally a lot faster, although with less features.
I practice Inbox Zero. If an email hits my inbox, I either act immediately or write down a Card in the according Trello or do nothing. However, the mail will be archived by the end of the day.
I have no fancy automated email rules set up. For me, setting them up always turned out as a waste of time.
10 years ago, I read a Lifehacker article saying something like “it’s 2007, just use the search feature” — I’ve been doing it this way ever since, never missed a mail, never lost a mail.
I have exactly one folder set up, it’s called “Invoices” and it contains tax-relevant stuff. The rest gets archived completely unsorted and I look it up if I need it.
Pomodoro
I try to keep myself focussed and don’t get distracted to much by the usual storm of Slack messages, notifications and emails. If I really need to concentrate I make use of the Pomodoro Technique.
My setup is the following:
* Enable Do not Disturb-Mode via Alfred
* Start Spotify, apply hoodie for extra hacker points (optional)
* Use Be Focussed Pro to set the goal of the session and start the timer.
I keep the ticking timer in my macOS menu bar to remind me to focus on this single task.
The Pomodoro technique works well for me, but I only use it if it makes sense for the task at hand. I learned quickly that it does not work well for every task, but when chosen wisely it can be a real productivity booster.
That’s it for now! 🎉 Just a quick overview of some of the tools that make my work a little bit more productive. If you know other ways to do it, or you missed something, please let me know in the comments!
- When pressing tab the following keys get remapped: uio=789; jkl=456; m,.=123;<SPACE> = 0
Photo by Arthur Lambillotte on Unsplash
Top comments (33)
Great read!
A lot of my productivity hacks come from Deep Work - Cal Newport.
An "ah ha" I got from his book was to set up my environment and mental state properly.
Before I work, I take the dog for a walk and mentally walk through what I want to accomplish, and I attempt to get into the frame of mind necessary for extreme focus -- the kind a chess champion or a surgeon would need.
Once home, I prepare a coffee, some water and a few snacks. I clean my desk, write down my time blocks and todos for the day, and in general just get ready so I won't have to move for hours.
When I'm ready, I close my office door and I completely get in the zone. All unnecessary browser tabs are closed, phone is at a safe distance so I won't check twitter, etc.
With practice, I can enter the zone fairly quickly, and with my little todo list next to me, I am often very pleased with the results of the day.
Good points, the book is going on my reading list :)
I was very glad when I finally bought it. The sooner you read it, the better :)
Damn, lots of stuff here I'd never heard of.
Thanks, I hope you found something interesting!
I really enjoyed this post - capslock to ctrl/esc is one of my favourite hacks too.
Couple more things which have worked for me which you may like:
Spacefn layer: hold space then hjkl for arrow keys, then you don’t need a specific slack mapping, there is a Spacefn example in KE I am pretty sure
Hyperkey: map a key to command+option+ctrl+shift and then map hyper+other_keys to open apps directly - saves a lot of time for me.
I wouldn’t be surprised if you are already doing this ;)
Hey, super good points!
Spacefn layer: I remapped holding space down to cmd for some weeks, but it showed side effects when I typed sloppily. Your idea sounds better and could solve a lot of my problems. I think I might give the Spacefn layer a try!
Hyperkey: I love the idea, I just don’t know where to put the key. 🤔 Can you tell me more about your setup?
'Sup?!
I currently have right option bound to hyper (I was never using it for anything else).
Since you have capslock bound to ctrl/esc maybe you could go with the left ctrl? Or something else that you don't use. If you are super daring, how about mapping enter (when chorded) to it?! (and of course leaving a single enter to it's normal functionality).
Here is my current karabiner config: github.com/fenetikm/dotfiles/blob/...
Ah, very cool, I will try this out!
What do you use to create the shortcuts based on the hyper key?
Good question! I am using Hammerspoon - here is my config for an example:
github.com/fenetikm/dotfiles/blob/...
(Ignore the keyboard swapping bit, that's out of date. Karabiner elements supports device dependent mappings now)
Another useful tool to have in one's back pocket.
Very cool, will check it out! Thanks!
Really excellent writeup, Christian! So much cool stuff here. I hadn't heard of Karabiner Elements. (I use Alfred to mess with my keyboard shortcuts, but Karabiner seems really interesting.)
I'm surprised you didn't mention any kind of snippet tool, like TextExpander. Do you have a favorite?
Thanks! I use Spacemacs/Emacs as an editor and yasnippet (joaotavora.github.io/yasnippet/) as a snippet tool for it, but I don’t use one outside of Emacs. I tried it in Alfred for some time, but it never stuck with me.
I use the Workflow app on mobile to prefill DayOne journal entries though.
I am curious: What do you use snippet tools for?
TextExpander does the usual snippet expansion stuff, which is great. But what puts it on another level is that the expansion doesn't have to be static. Instead of plain text, I can tell TextExpander to run a bash script and emit the output. I use this to quickly fetch ticket titles from Jira, parse Velocity template files and emit boilerplate code to call them, etc.
And I'm a recreational cyclist, so I use it to ease the pain of typing the notation for the workouts I sometimes do.
If you're interested in a bit more detail, I did a short write up here on dev.to a while back.
Good articles, thanks for sharing! TextExpander is mightier than I thought, seems like a useful tool! 🤔
I use several of these; I like the Getting Things Done methodology and practice email inbox-zero, and use Things to manage the GTD workflow. I lean pretty heavily on Siri to add items to my GTD inbox. I wear an Apple watch, so any time something pops into my head I can just say, "Hey Siri, remember to write an article on Little Snitch and VPN leakage," and it will automatically appear in my inbox in Things. It helps get tasks immediately out of my head and into my GTD system.
One small utility that I use constantly is PopClip, a contextual pop-up menu that's activated on selecting text. For example, I can highlight an address in a document and PopClip will bring up a tiny menu that lets me do things like open Endicia with the address so that I can print a mailing label. I use it so much that it's jarring when I'm on a Mac that doesn't have it installed.
One last tool that I use quite a bit is Dash docs (despite the dev's rocky history with Apple). It integrates with every major IDE; if I'm in Webstorm working on some JavaScript, a quick Cmd-Shift-D brings up the documentation for whatever object or method is under the cursor. It also integrates with StackOverflow for the desperate :)
Be careful not to get caught up in Productivity Porn...that's when you spend more time playing with productivity tools that doing actual work :)
Oh, wow I didn't know about PopClip. Could you give some more examples how you use it?
I think my top three uses are:
Open a URL in a browser (a URL that's just text, not a link).
1a. Open a URL in Chrome specifically.
Add selected text to Things inbox.
Copy selected item to clipboard.
There are well over 150 add-ons, and you can easily write your own. Here's the current list of PopClip add-ons.
Some great tips in here Christian!
A lot of my productivity tips are explained in My Mac Setup, but in a nutshell Alfred and aliases for the command line and git. You've given me some new things to check out as well, e.g. Karabiner. I think @wesbos mentioned that in one of the earlier episodes of Syntax FM, so definitely gonna check that one out.
Thank you for this writeup! I also use Fira Code 😍
I am on Ubuntu and I sometimes have to copy multiple think at the same time. In such cases a clipboard manager (glipper in my case) is very handy. I can copy multiple stuff (image, file, text, spreadsheet table etc) one after another without worrying previous clips will be overwritten. Accessing all previous clips is just a shortcut away.
Clipboard managers can also remeber clipboard history after reboot if you want to.
I use ClipStack on Android for clipboard history and what I love about it is that I can launch ClipStack history instead of Google Assistant when I hold home button.
If you think that I am a little obsessed with clipboard managers just remember that I think you are a little obsessed with keybindings 😁
Nice article and thanks for introducing me to new tools and techniques.
One of my favorite in this article is about how you are using Trello and GTD.
Does anyone know the similar type of article which targets windows users?
As an Emacs user and keyboard person I'm surprised org-mode didn't come up. TODO/project planning/authoring, all with plain text. The ultimate productivity tool. No wonder it's still going strong after 15 years!
Deep inside me, I know that Org-mode is the answer. I am just afraid that I never can go back to anything else if I start using it 😩
Interesting. in area of keyboard i MUST have ThinkPad one. absolutly must for me. i remap capslock and windows keys to F13 abd F14... but to be honest i do not use them much. they are more like dead keys.
about getting in zone helps me:
for note taking i use post in notes and whiteboard
i just didnt found right tool for task tracking, so i keep most of it in my head
(i find Trello bulky and i feel it dont show enought information on given space- even on my UHD display i see thin column with messages and it drives me crazy)
i am like more for “ github issues” style of work.
i was thinking about trying Jira, or any oher suggestions. :)