Recently, I got into a really interesting discussion on Twitter with @jongalloway, and it was just about 100% constructive and civil. On Twitter!
It's all about whether or not to use Homebrew to set up and maintain a Mac for software development.
I started programming on a Mac in late 2002, on Mac OS Jaguar, version 10.2. Since then I've used at least 10 different Macs, which means I've set up at least 10 different Macs. We developers are picky about our setups, so setting up a brand new vanilla computer takes time and energy.
That got me thinking: I've used a Mac for almost 20 years as my main development machine. What do I do to set up and maintain my machines?
Like any good developer, I've tried a bunch to automate myself out of work, so a while back I tapped yadm to install many of my tools and store, version, apply, and upgrade various configurations for them. I store all that stuff in github.com/arschles/dotfiles, so let's start there!
~/.zshrc
file over and get the same plugins and everything else without any workbrew
my Brewfile and it'll just go install everything I need with no fuss. It acts like apt
on Debian. In fact, it now works on Linux (that's pretty new) so I can move my Brewfile
over just like my ~/.zshrc
.envrc
file inside my project.hub
is a nice little CLI that lets me do GitHub "things". I do a lot of open source work (athens a lot these days) so hub
can take me from committing a change alllll the way to submitting a PR to the upstream repo. I really only use it for quick PRs because I like to go into the browser to really think through my PR descriptions, but it's really nice for quick thingsgh
is sort of a newer version of hub
. It's called the "GitHub's official command line too" so my money's on this thing implementing everything that hub
has. It's not quite there yet, but I'm starting to move away from hub
to this. The maintainers of the project are open to feedback also, so I feel pretty good about the move I try to stay in the command line as much as I can when I'm programming and only break out for really good reasons. I mentioned that I go into the browser when I want to submit pull requests. That's so I pull my head out of the sand and think about the stuff I just built.
Another good reason I pop out of the command line is for my editor. I never got into vim or emacs. I've always used IDEs. In recent-ish memory, I've used almost all of the JetBrains IDEs, Visual Studio (I've written a good amount of C#!), Sublime Text, Atom and now I'm currently on VS Code.
I plan to stick with VS Code for a while for my main editor. It's really flexible and seems to have the biggest ecosystem of all of the open source editors/IDEs. Plus there are some cool "add on" features like VS Online. Actually, check that one out if you haven't. It's the VS Code GUI on your machine but you run/debug/whatever the code on a cloud VM
And the last one! I use GitHub desktop a ton. Technically I can do just about everything on the command line instead of using this app, but I have lots of good reasons why a lot of the time I go into this app instead:
Those are the big things. My development life is a hodgepodge of CLIs and GUI tools and it works great for me. I can make quick, focused progress on a PR or issue I'm working on, without many distractions, and that's all I can ask for!
But! I'm about to start challenging myself, and change the most fundamental of all of my tools: the operating system. I'm starting to move to Windows as my main development OS. I'll be using WSL 2 to install and use many of the same CLI tools I'm already used to, but the rest will be interesting to say the least.
I'm challenging myself to learn (and unlearn!) a lot to get comfortable with a brand new dev setup.
Interesting times ahead - stay tuned :)