My first conscious memory of a computer interacting with the real world was the very first iMac commercial. Before that, computers were a nebulous thing, only real in movies and TV shows. It would be almost a decade before I purchased my first Macintosh (12" iBook G4), but the seed was planted.
I love the Mac. For whatever reason my way of thinking and Apple's way of building products are closely aligned. This was true 20 years ago lusting after that shiny plastic computer and it is true now. But the Mac is not just Apple. It is the third party software running on it. It is the OmniGroup. And Panic. And Bare Bones Software. It is a whole ecosystem of brilliant software shops making working on the Mac a delight.
Four years ago I got back into programming. I started with XCode, since I wanted to write an iPhone application. I didn't touch the command line for almost two years, because, hey, I'm on a Mac, right? We don't need the command line. Turns out, we do.
Shortly after I crashed and burned with the app I took a job digitizing a small business. For that I not only needed to write a user facing iPad app (exciting), but also write shell scripts to backup data regularly, log in remotely to a server, the lot. That meant editing text files. I did the research (I googled "what text editor should I use for programming?") and it came down to Vim and Emacs. I didn't like Emacs. I was okay with Vim. So I plodded along editing text files with Vim, cursing, ever so often, the confusing navigation and the lack of integration with the system I was using (Don't get me started on MacVim). I grew frustrated. I could see that it was powerful, but it felt designed to make it really hard to break in. I learned a bunch of the commands and tried to go on.
It was the "right" thing to do, of course, because, what if OS X went away in the future? What if Apple became terribly oppressive or stopped building Macs altogether, and I had to use FreeBSD or Linux? I "need" something that is portable! The internet told me so™. Besides, Vim is open source so if something is wrong I can fix it myself! And it's so configurable! You can add on so much stuff! These are all good arguments, but here's the thing: Portability and Adaptability are good reasons, but they are not the only reasons. Stability is also good a reason. Integration with the rest of the system is a good reason. Ease of use is a good reason.
If we agree that they are all good reasons, then the choice must come down to personal preference. It must come down to priorities. So I made a list of priorities. This is that list:
- Ease of Use
- Age of Software
- System Integration
- Adaptability (things like open source, add-on support, etc)
Portability is lowest on this list, because I love the Mac. If the Mac stops being a viable platform I might consider an alternative. Or, and this is much more realistic, I will become like one of those 90s users that held onto their Macs long after it was a viable platform. Portability is not an issue for me. Functionality is. And yes, Vim and Emacs score high on that point, but my second highest priority is ease of use on which point both utterly fail. I don't have the patience to learn an overly complicated user interface anymore.
Once I ordered my priorities I looked around the code editor landscape with fresh eyes. And I took a closer look at BBEdit. I was a vaguely aware of BBEdit and heard that it was supposed to be really good. For a long time the price tag was prohibitive ($50 is more than $0). Price used to be much higher on the list, before I had a regular income. Now I'm happy to pay money to save time. It's a good tradeoff. I downloaded the demo and fell in love with it almost instantly. It felt like the Mac in the way its way of doing things aligned with my ideas about doing things. I've been using it ever since to edit C++ projects, write shell scripts, log in to the server at work to edit config files, and to write blog posts in Markdown. I use it for taking notes in meetings. It is one of the few apps that is always running. I'm not saying this lightly, but BBEdit is so good that it might be my favorite piece of software ever. It's rock solid and so full of features that I'm still working my way through the manual. It's a real differentiator, in that I wouldn't consider a traditional computer* without it anymore.
Of course, your list of priorties will be different. It might even have different reasons on it. That is a good thing. Variability is important. What I'm saying is not that BBEdit is objectively the best choice for everyone. What I'm saying is that it is subjectively the right one for me. You should be aware of your own priorities and why they are important to you. You should figure out what you value in your tools, and why. I did, and my life is much better for it.
* I would kill for BBEdit on iPad, but alas, probably not going to happen.