Most people reading this title would immediately assume this is about some horrible thing someone did because they didn't stop and consider the consequences of their actions. That's half right, the person was me, and we'll get to that.
But the actual title is the marketing tag line for a program I installed on my computer a couple of months ago. This program does a lot of neat things, mostly involving letting you find programs and files more quickly without having to use your mouse. As programmers get sucked deeper and deeper into coding, it becomes more obvious that using the keyboard is faster than using the mouse: I can type about ninety words a minute, which is ninety possible actions; I don't know anybody that can click on ninety disparate things per minute. Because I'm still under this youthful, testosterone driven illusions that "challenging" jobs are more fun, I take jobs that require me to do things much faster, and is becomes imperative that I can find and change something with option+spacebar, T, E, enter, control+T, B, A, enter, control+F, enter, type type type, control+S, apple+TAB, up up, enter, all of which takes about ten seconds assuming I don't lose track. With a mouse, I wouldn't even be done scrolling through the file list looking for the file I need to edit.
So, awesome! right? Sure, if that's what you want to do with your life.1 In the need for speed, I looked at the "Act without thinking" tag line, and something struck me as a little off about it, but it was only months later that I thought, "Wait a minute. Didn't mom say something about thinking before acting?"
The fact is, the millions of keyboard shortcuts I have to remember do become something similar to muscle memory. My autosave files, which periodically save what your working on until you save it manually, have a half life of about a tenth of second. Whenever I stop to think about something, I usually go to save what I'm working on, only to find I've already saved it. In fact, I've probably been saving it once every couple of seconds while thinking about something else.
Still seems cool. If I can reduce enough other operations to that kind of impulse I should eventually be able to do my job with one hand while watching Simpsons reruns, right?
As the poor coder learns more and more, it becomes faster to work closer and closer to the operating system. If you grew up like I did, you will see a certain irony in starting your first few computer games by typing "wingcmd.exe" into DOS, then buying windows, then seeing wysiwig editors, then buying a mac, and doing everything with a mouse, only to opt for computers as a career and eventually working your way back down to typing in "wingcmd.sh" to run a pirated remake of an outdated DOS game. A lot of my job is done on the command line now, which I run in a program called Terminal that I open with my "Act Without Thinking" program. The truth is, I don't think about it that much.
I didn't think about it until I was working on a pet project at home one evening. I had, for some reason, done a lot of voodoo to get a picture uploading widget to save picture files properly. This voodoo had removed my ability to delete all the test files I was creating via the normal means of moving them to the trash bin and emptying it. So, never fear, I opened up the old Terminal, went to the gallery folder, with all the tests, and started typing in sudo -rf rm *.
Here's a quick translation:
- • sudo: I am the administrator, so do whatever I say.
- • r: do whatever I tell you to do to do in all the subdirectories in this folder.
- • f: don't ask me if I'm sure about doing it.
- • rm: delete.
- • *: do it to everything.
… so the full command means "Delete everything in this folder and all subfolders without checking with me."
This was innocent enough. I just wanted to get rid of all the galleries, and it was working fine.
The other feature of Terminal is you can just hit the up key, and it will cycle back through a history of commands that you've typed.
So, this is what my directories looked like:
Now, while I was in the galleries directory, it made a lot of sense to just destroy test and test2 with one simple command.
Sadly, the very last time I typed sudo -rf rm * into my terminal while working on this project, I was in the project directory. In fact, I had been typing in sudo -rf rm * for ages, so all I had to do was hit up twice, then hit enter. Why twice? Because the exact previous command was the command that put me in the wrong directory. I have no idea why that command was there. And it didn't register that it was there, because I wasn't thinking.
A better man would have backed this project up somewhere. Why didn't I? Well, because I wasn't thinking. A thinking man wouldn't have added that "f", and would have made himself say yes, I'm sure, before wiping out everything in sight. A thinking man would have realized that speed was not the end-all goal of perfecting his workflow.
So take this as a cautionary tale that if someone tells you you can do something without thinking about it, maybe you shouldn't.
1 My jury is hung, and probably dead by now.