DEV Community

Cover image for My Mac Dev Tools
Ben Greenberg
Ben Greenberg

Posted on • Edited on

My Mac Dev Tools

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)"
Enter fullscreen mode Exit fullscreen mode

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)"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

That's all it takes to use it. Pretty nice, right?

fig

Download it here.

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.

Example of fig in use

asdf

$ brew install asdf
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Want to switch between versions of Ruby using asdf that are installed on your machine?

$ asdf global ruby 3.1.0
Enter fullscreen mode Exit fullscreen mode

yarn/npm

$ brew install yarn
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

To clone a repository on your machine:

$ gh repo clone path/to/repo
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

Summary view of New Relic One monitoring local machine

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! ❤️

Sponsor

Top comments (9)

Collapse
 
moopet profile image
Ben Sinclair

Everyone has their own preferences - for instance I don't see the point of things like gh clone repo path/to/repo over git 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:

I love using Oh My ZSH instead of the default Bash.

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 of bash 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. Compare bash to zsh if you like, but it's easy to, ahem, bash on bash when you're comparing a framework instead. Not to mention that 90% of the things people evangelise are available in bash 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 in bash though. All my scripts that don't use sh use bash 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. Press o-tab and expect it to autocomplete things starting with "o" and half the time it shows me node_modules and the cursor sits looking at me like a happy puppy while I facepalm.

Collapse
 
bengreenberg profile image
Ben Greenberg

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. :)

Collapse
 
sturpin profile image
Sergio Turpín

Good post, I didn't know fig 👌😉

Collapse
 
bengreenberg profile image
Ben Greenberg

I believe so

Collapse
 
juanvegadev profile image
Juan Vega

Hi Ben, I tried fig.io a few month ago and it was super slow, has it improved?

Collapse
 
bengreenberg profile image
Ben Greenberg

Hey Juan, I've been a user for a while now, and haven't noticed any speed issues with it.

Collapse
 
juanvegadev profile image
Juan Vega

Good to now, I have to give it another try

Collapse
 
oliverarthur profile image
Oliver Arthur

Fig seems not to work with the new MacBook

Collapse
 
bengreenberg profile image
Ben Greenberg

I'm using it on a brand new MacBook. Perhaps, try to contact their support team to help you?