simple not easy - part 1 - tools
Simple, not easy! (Referencing "Simple Made Easy" - Rich Hickey 2011). Neovim, not cursor. My tools are simple, not easy. Ease would be to download an editor over the internet, put up your credit card information, and log in. Ease would be not understanding the core abstractions of what a text editor actually does, ease would be shying away from unix-style computer use.
Ease would be complexity, not modularity. A single tool that does everything for you. A cursor. A web browser, that edits text, that has UI buttons that you click on.
To do simple, not easy, would be to subject yourself to the limits of other's creativity. The simplicity, while hard, makes the important things easy. The ability to adapt. The ability to change it yourself. The ability to extend, change, and come up with creative ways to interact with your problems yourself.
I don't use the tools of others. I am not "others", and neither can I be modelled by the average of others. This is not because I am better - but because I am different. I work on a codebase that is a Gajillion Lines. I need custom solutions. I need russ cox's regex trigram indexer. LSPs? I work in too many different codebases. Even intellij isn't enough for me. So, I simply rawdog it.
What does the computer do, when I put up a pull request? To check that my code is right? I simply figure out what that script is and run it. I use a unix terminal. I maintain sessions with tmux. I use nvim. I write my own extensions. I have my own code search tool. 50ms per keystroke over 20 million lines of code.
I don't want your tools. Sure, it would be easier. And sure, I would be productive, faster. But I'm not trying to get productive easily. I am trying to maximize my productivity. I am trying to operate beyond the limit of what was thought possible. This, by definition, means I can't do things the way everyone has always been doing them!
Again, this isn't because I think that I'm better than everyone else. I'm not. Actually I'm kind of retarded in a lot of ways.
You see, this is really just simple logical inference. If I do things like everyone else, I will only achieve the level of impact that everyone else is. So I don't. Either I am at the bottom of the distribution, or I am at the top. Fuck the middle
This is the core feature of SIMPLE. SIMPLE is hackable. SIMPLE is changeable. I need to be able to UNDERSTAND WHAT IS HAPPENING. Because if I don't UNDERSTAND HOW MY TOOLS WORK HOW CAN I CHANGE THEM TO GET THE EDGE? And i'm not trying to be productive. I am trying to WIN
This is why I design for simplicity! I design my tools for simplicity, I design the software I write for simplicity. I am designing for understandability. That which is understandable is fixable. And that can change quickly, can get to the ultimate version faster. Much, much faster. Cycle time is an exponentiator, not a linear multiplier.
A person who uses a tool he does not understand means they cannot change it. They cannot escape the herd.