推荐理由：AutoHotkey，这玩意能帮你执行一些自定制的宏，从而完成一些重复性很强的操作——登录游戏或者打开 VSCode 与 XShell 等等工作用得上的工具。虽然写好宏可能需要一些时间（有时还需要自己动手确定鼠标坐标），但是完成之后一定程度的自动化会赚回它们，只需要启动宏，然后泡杯咖啡或者拿瓶快乐水，回来就可以正式开干了。
今日推荐英文原文：《Failing Forward》作者：John Martinez
That’s me in the yellow tie.
I used to play this game called Armageddon. It’s a MUD, short for multi-user dungeon, which is basically a text-based online role-playing game. You make a character and are immediately thrust into a world where survival is your number one priority. The game is brutal. The world, at some point thousands of years ago, suffered a terrifying catastrophe that transformed the vast majority of the planet’s surface into an inhospitable desert.
There’s very little that can protect or save you. Venturing out into the desert on your own can mean dying of starvation or thirst, getting lost in a sandstorm, falling off a cliff, sinking into a sea of ash, or getting mauled by any number of horrible and hungry creatures. Worst of all, when your character dies, they’re dead for good. The game’s iconic mantis head appears as your character loses their last hit point, effectively sending you back to the game’s main menu.
I’ve seen this head dozens of times.
The game can be incredibly difficult for new players to get into. You spend so much time making your character and writing out this interesting backstory and description, but you go outside the gates and instantly get lost in a sandstorm and eaten by a giant dung beetle. What are you supposed to do in that situation?
I was very persistent. I made a new character, only to get them killed by accidentally starting a fight with an NPC guard. I have new information regarding how to play: avoid giant dung beetles and make sure you type the correct keywords. OK, time for a new character.
Eventually through trial-and-error, I learned how to survive in the game. My starting skills weren’t high enough to fight off any monsters, so I needed to find somewhere I could train them up safely. There’s a newbie-friendly guild you can join that helps you level up your fighting skills. The way your character learns new skills? Through failure. When you fail at something, you gain a skill up. Hit someone with your sword? Fantastic, you deal damage. Miss someone with your sword? Dang, but now you’re ever so slightly less likely to miss again.
Armageddon taught me a lot about failure. More specifically, learning through failure. I became enamored with this type of system. Most games reward winning, but Armageddon rewarded losing. Perhaps it wasn’t an immediate reward, but eventually, after dozens upon dozens of misses and failures, your character’s skills would grow and become legendary. That dung beetle that killed me so many weeks ago? Now it’s a cakewalk. Sandstorms? Now my character can navigate with his eyes closed. All of these things that seemed impossible, through failure, have become not only possible, but easy.
Up until that point I had never really considered failure to be a worthwhile option. I would beat myself up for failing. Instead of reflecting on everything I did, I would beat myself up for everything I didn’t do. It was pure hindsight. I was so afraid of failure that I found myself simply refusing to even try. After all, losers fail. But if I don’t fail, then I can’t possibly be a loser!
Unrelated album cover.
I recently had a technical interview for a company I’m incredibly interested in. I spent hours preparing for it—studying technical interview questions, doing problems at home, speaking with other employees. The day of the interview I felt ready. Nervous, but ready.
Five minutes in, I realized I was done for. The interviewer laid out their first question, and I felt like they might as well have asked me to perform brain surgery. I was in over my head. None of my studying had prepared me for this!
Old me would’ve shut down. Old me would’ve curled into a fetal position and eaten a box of Oreos in shame. But I’m not old me. I’m current me, and when the anxiety that so often precedes failure felt like it was beginning to creep into my psyche, a thought popped into my head: “I am not at all prepared for this, so I’m going to spend the next hour learning everything I can.”
I did exactly that. I started asking the interviewer all sorts of questions, and by changing the context of that hour from “an interview” to “a learning experience,” I could feel all of the anxiety welling up inside me fade away. I felt confident asking the interviewer for clarification and additional info. I didn’t stop pressing him until I felt like I understood what he was asking of me. From there I started coding as best I could, taking his advice along the way without feeling like I was messing everything up.
Eventually, I managed to get through the first part of his question. The second part came, and I was completely unequipped to answer it. No worries, my anxiety was gone. I wasn’t even thinking about the interview at this point. It was almost a tutoring session, a free one-hour class.
In that hour I think I learned more about recursion, complex problem solving, problem framing, and ternary operators than I did in the past few weeks of study and practice. I thanked my interviewer graciously and earnestly. When the phone call ended, I couldn’t help but laugh. I was so out of my element, and it didn’t even matter!
Just like my character in Armageddon, I learned a little bit from that failure. Maybe that alone won’t be enough to bring me great success, but perhaps the next failure, or the next, next failure will. These ultimately small failures are all adding up to something in the end.
I like to think Armageddon put that little spark into me, and over time that spark became a philosophy that has shaped me into the person I am today. Someone who can confidently say, “I fail sometimes, and that’s great!”