## Some Cringy Self-Promotion

This compliment feels awkward to type.

5 people have told me that they wish they were as efficient at using a computer as me. At least 2 of them are probably better programmers than me. As one of them put it, “you have this really fine-tuned workflow that makes it really fast to do a lot of things”.

It was kind of funny given that I once wrote a blog post about how it took me more than a year to do the most trivial programming tasks.

If you are reading this, here’s my main piece of advice for building a good workflow.

We all hear how we should use profilers because they let us figure out the bottlenecks in our code.

Well, you’re not different from a computer. You can profile your own performance.

You should look at which tasks seem to take the most time, and then see if they can be automated.

This is a skill that’s similar in execution to teaching yourself to notice when you’re lying to yourself.

You train yourself to

1. Look out for momentary discomfort when using a computer
2. Figure out which task is causing the discomfort
3. Make the task is easy to do as possible.

Examples get the general idea across better.

## Examples

### Window manager

Resizing windows sucks. If you have a large monitor, dragging windows to fill half the screen is error-prone and takes ages. So you don’t do it. Which defeats the point of a large monitor, which is the ability to see multiple things at the same time.

Once you notice that, you can Google “how to resize windows faster”. You’ll end up finding window managers if you look for about 5 minutes.

Now you are able to resize windows of hockey. Suddenly, it’s pretty easy to have 6 or 7 windows open simultaneously if your monitor is large enough.

You can go one step further and have a tiling window manager, but at that point you hit diminishing returns for most cases.

### Application switching hotkeys

Switching applications is one the most frequent tasks that people doing computer. If you’re programming, you’re likely to be using:

1. Browser
2. Text editor
3. Terminal
4. PDF viewer
5. Music player
6. Messaging client like Slack
7. API viewer like Dash
8. Calendar application.

That’s 8 applications. I assign each of those to a hotkey (the functions keys and shift/ctrl-fn keys) depending on the frequency of use.

Now you only need to resort to clumsy methods like the mouse or command tab for infrequently used applications. It’s possible to go weeks without using the mouse to switch applications.

### Escape and Control

This one is more specific to Vim users, but can be tweaked for emacs or general, non-technical use cases.

You make your advice to remap Caps Lock to control. You can go one step further. Make Caps Lock into control when you hold it down, and into escape when you tap it by itself. For emacs, switch escape with control-g, the cancel hotkey.

### Shift in parentheses

Same idea as above, where the shift keys will also type parentheses when tapped by themselves. Useful for basically all programming languages, not just Lisp. It also encourages you to use parentheses more. I know my blog is full of them.

### Simple scripts

Lots of annoying task can be scripted. I have scripts to:

• Create an eBook for my journal every day
• Turn my notes into a ePub and send it to me
• Rename all my scratch notes automatically
• Sync my wiki
• Create a summary of my daily notes and email me so that I read it
• Reformat all my Markdown nicely