On Customization
A couple letters back I talked about how mental models don't scale. If you heavily customize the environment to your needs, it'll be hard for other people to work in that environment. This makes it hard to scale up. Today I want to talk a little about the flipside of that, why I care about customization at a local level.
My vimrc is over 400 lines. But I don't just customize my vim, I customize my computer too. Some people find it weird that I program on Windows, but the main draw for me is AutoHotKey. AutoHotKey hooks keyboard shortcuts into the windows API, making it easy to automate lots of small tasks. I want to write a longer essay on it, but in the meantime, some scripts I recently hacked together:
;sci-hubize
>!^s::
Keywait, RControl
Keywait, RAlt
SendEvent, ^l
SendInput, {left}sci-hub.tw/{enter}
return
By pressing ctrl+right alt+s
, it loads whatever page I'm on into sci-hub. This makes using sh almost as convenient as having a journal subscription.
; Format copy as markdown link
#!c::
ctmp := clipboard
clipboard := ""
Send ^c
ClipWait, 2
clipboard := "[" . clipboard . "](" . ctmp . ")"
Return
If I have a link on the clipboard and press windows+alt+c
, it turns the selection into the title of a markdown link. This comes in handy when I'm writing up research I'm doing.
I also have lots of small tweaks. ralt+x
switches to the terminal from any window. Typing ;a
puts in a ∀. I'm customizing how the computer works to my needs. Same as I'm doing with vim, same as I'm doing with shell scripts. As I mentioned before, it makes it very hard for me to work on other computers, and it makes it hard for other people to work on mine. But I'm okay with that. More and more the computer becomes an augmentation of myself. I prefer things that way.
I'm thinking about what the next steps would be, if I wanted to customize things even more. I recently added Dragon voice-to-text to my workflow and find it very convenient, but wonder if I could configure it to recognize clucks and hums. It's easier to clap my hands than say "open dictation box".¹ Another thing I want to try is alternate input devices, like foot pedals or linked touchscreens. More and more the computer becomes a unique thing that nobody but me understands. It feels more like the inside of my head.
(... I have no idea if this actually makes me more productive or not. Could be I'm deluding myself! But I certainly feel more productive. Also all these customizations mean that things take less activation energy to do. For some reason the fiddliness of copying two links and typing all those brackets made me less likely to use markdown links. Adding a keyboard shortcut makes it less 'draining'. Maybe I'm just lazy ¯\_(ツ)_/¯
)
¹I don't think this is gonna work. Dragon seems optimized for text, not arbitrary sounds. More likely I'll create custom commands like "zot" or "kip". I've already set it up so I can easily say something like ∀x ∈ F
which is super cool!
If you're reading this on the web, you can subscribe here. Updates are once a week. My main website is here.
My new book, Logic for Programmers, is now in early access! Get it here.