Why am I obsessed with a mouse-less workflow?
I've always loved Linux. From the first moment I was asked to install it on a machine at work (as the IT team lackey), to my current laptop running base Arch(btw) and the Suckless software stack (dwm, dmenu, st, surf). My Ultimate Minimalist Linux Dev Box(r). But I've never really worked in it, apart from one glorious year at Okta.
Since I worked in Microsoft technologies for the first half of my career, I worked in Windows. Our work machines were windows machines and .NET didn't run on anything else, back then. Then, when I moved to iOS development and more intense React/Node web apps, I moved to Macs. I thought I was living high on the hog, because I got to use a Unix-variant, anyway. But Apple flies pretty much in the face of the Unix Philosophy of doing one thing and doing it well. They do everything and they do it ...better than Microsoft, these days.
Way Back in the Way-back
But I remember back in 1997, when I was a Webmaster (back when that was a title you could have), I had to go out to our small, shared data center to manage our server every once in awhile. You'd go to the server rack and pull out a KVM drawer and log into your server. I looked up for a moment, while a process was running on the server, the guy at the rack next to me was logged into a Linux box. He was running commands; text scrolling past as his fingers "played" the keyboard like a ...fucking musical keyboard. Like a virtuoso.
I thought to myself, "One day, I'll be that good."
I didn't, really. I wrote code in Visual InterDev. Later Visual Studio. Finally, VS Code.
And VSCode was everything I thought Visual Studio should be: bare-bones but modular. Give me the shell and let me install just the tools I need.
But after almost thirty years writing code, using VSCode since it was in beta, I still don't look like that guy. I still hunt-and-peck type. I'm pretty fast at it, but I can't touch-type. I waste a lot of time looking down at the keyboard, backspacing to fix typos, etc.
Then there's the mouse. Don't get me wrong, it's a genius device for operating a computer visually, but when you start paying attention to how often you have to stop and think, "Where's my mouse?", then grab it and then look at the screen and say, "Where's my cursor?". Like a bajillion times a day.
It only takes a few seconds, but a few seconds at a bajillion times per day, is like ...well a bunch of time spent looking for the mouse and cursor!
Don't Optimize Me, Bro
I get it. The Internet is full-to-its-circuits with people stelling you how to optimize your life for maximum productivity. Ten ways to make you a better person by maximizing your throughput. Something-Maxxing your 10x Life, bro.
This isn't necessarily about productivity for me. It is and it isn't. What I really want is zero latency between my thoughts and my code/writing/communications. I've seen developers present at conferences who knew Vim and typed properly, and it's almost like you're in their head. You're watching a movie that they are narrating and shooting at the same time.
Each time, I tell myself I am going to do it. I'm gonna learn to touch type and learn VIM motions. Minimizing my workflow, but forcing me to learn the bindings.
LazyVIM has been a God-send. I was able to just install it and go. Learn the key-bindings to show the directory tree, how to jump back and forth from code to the file-tree to another code file and back. Introducing tmux to my workflow. This is the killer app of the AI development era. Leave that agent coding in a tmux session while you go do other things.
Okay... Give! How's It Going?
Good days and bad days. I bought several cheap keyboards because I knew I'd be hitting the keys much harder. :D
I'm barely fluent. I'll put it there. I'm used to Normal, Insert, and Visual modes now. I regularly just hit shift-v to start visual line selection, arrow up (don't judge) and yank what I need to copy. I'll navigate to a word and run ciw to change in the text in the word. Or diw/daw to delete in and around words. Visually selecting is almost second nature now, but I should be using VIM motions there, too. I still have to think about ciw/caw or diw/daw and same with replacing everything in a paragraph/function/brackets of any kind.
As for my typing, I've not been practicing. Not regularly, anyway. A typing test here ...a typing tutor exercise there, but no consistency. I've been thinking about live streaming every night for an hour, where I practice touch typing and run through the Vim tutorial. I don't know why I think that will help. Maybe it will make it seem more important in my head. Maybe it will make enough money to offset some DoorDash order(s).
You Feel Like Giving Up, Yet?
Not every day anymore. Maybe once a week. Once every other week. But when I remember a vim motion and am able to edit 15 lines of code at once in about 0.5 seconds ...there's a dopamine hit.
Inhales deeply Yeah, baby. That's the stuff.
Might as well use my dopamine addiction for something positive.