You have a new Mac and you are so excited to get going on creating awesome applications on it. First, though, you need to install some dev tools. What do you put on your brand new machine?
Here is my list of what I run through whenever setting up a new Mac.
Oh My Zsh
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
I love using Oh My ZSH instead of the default Bash. Why? Here are just some of the reasons:
- Thousands of custom plugins and themes. I can constantly update my terminal in look and functionality whenever I need to, pretty easily.
- Autocompletion of the
cd
command. Less keys I need to type the better. - Spelling correction. This one is a big one for me. Who wants to get thrown off course because your finger hit the a instead of the s key?
Homebrew
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
MacOS does not have a default package manager unlike Linux, for example. That means managing your dependencies can be a real challenge. This is precisely what Homebrew takes care of for you. It gives you a universal package manager for your Mac that you can use for just about everything. Want to see an example?
$ brew install NAME_OF_PACKAGE
That's all it takes to use it. Pretty nice, right?
fig
This is the newest tool I install regularly on my machines, and I've really come to enjoy having it. Fig adds MacOS style autocomplete to your terminal. It is also completely customizable, so you can add custom autocompletions as you need them.
asdf
$ brew install asdf
No matter what language you are working with, chances are you will need to install it on your computer. Furthermore, you will probably need to maintain different versions of that language for robust testing and compatibility. Doing all of this manually can be a real headache, while asdf
makes it as straightforward as it can be.
Want to install a particular version of Ruby with asdf
?
$ asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
$ asdf install ruby 3.1.0
Want to switch between versions of Ruby using asdf
that are installed on your machine?
$ asdf global ruby 3.1.0
yarn/npm
$ brew install yarn
If you are working on modern web applications, chances are you will need a Node package manager. The two most common options are either yarn
or npm
. They operate functionally very similarly, so choose the one that makes sense for your application development. You may even need to install both depending on the stacks you work in.
GitHub CLI
$ brew install gh
The GitHub CLI brings all the functionality you need in working with GitHub to your command line. It collapses sometimes complex git commands into a few words, for example to create a new pull request:
$ gh pr create
To clone a repository on your machine:
$ gh repo clone path/to/repo
I use it practically every day when navigating through pull requests, issues, and committing changes.
New Relic CLI
$ curl -Ls https://download.newrelic.com/install/newrelic-cli/scripts/install.sh | bash && sudo NEW_RELIC_API_KEY=YOUR_NEW_RELIC_API_KEY_HERE NEW_RELIC_ACCOUNT_ID=YOUR_NEW_RELIC_ACCOUNT_ID_HERE /usr/local/bin/newrelic install
This one might seem a bit interesting. Why would you install an application performance monitoring and monitoring tool on your machine? Because, it provides incredible data on your local computer!
Take a look at this screenshot just of the summary view of what is going on within my computer.
When you start intensively developing on your computer, you are going to want to have an understanding of the health of your machine, and New Relic gives you that perspective. Best of all, a New Relic account is always free, so there's really nothing to lose and a whole lot to gain.
Was this blog post helpful? Consider sponsoring my work on GitHub to help me create more content like this! ❤️
Top comments (9)
Everyone has their own preferences - for instance I don't see the point of things like
gh clone repo path/to/repo
overgit clone repo path/to/repo
except that the former is presumably restricted to only working with Github. But if you work exclusively with GH or Microsoft systems then I suppose it's a little less typing.However, I will engage thrusters on my standard response to this:
bash
hasn't been the default on MacOS for quite a while. It probably still would be, but they don't like touching copyleft software, which is why the version ofbash
was so old (it was the last non-GPL version available) and why people on other OS had access to a decade-newer version. The comparison of a plugin manager with a shell also gets me. Comparebash
tozsh
if you like, but it's easy to, ahem, bash onbash
when you're comparing a framework instead. Not to mention that 90% of the things people evangelise are available inbash
already.Personally, I do use
zsh
, but that's pretty much because I have to use a Mac for work so I've standardised across all my machines. There's nothing I do day-to-day that I can't do inbash
though. All my scripts that don't usesh
usebash
for example, because it's more likely to be installed and therefore the script is more portable.And the autocomplete in
zsh
is frustrating sometimes. Presso-tab
and expect it to autocomplete things starting with "o" and half the time it shows menode_modules
and the cursor sits looking at me like a happy puppy while I facepalm.Thanks for your thorough response, and appreciate your standard "thrusters" which were triggered by my terminal preferences! Just a quick clarification, I never intended to "bash" any technology, so I think you may have fired your thrusters a bit prematurely here, just stating my preference. :)
Good post, I didn't know fig 👌😉
I believe so
Hi Ben, I tried fig.io a few month ago and it was super slow, has it improved?
Hey Juan, I've been a user for a while now, and haven't noticed any speed issues with it.
Good to now, I have to give it another try
Fig seems not to work with the new MacBook
I'm using it on a brand new MacBook. Perhaps, try to contact their support team to help you?