Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gtallen1187/81bb60963d5db50439447b02b7abd611 to your computer and use it in GitHub Desktop.
Save gtallen1187/81bb60963d5db50439447b02b7abd611 to your computer and use it in GitHub Desktop.
Greg's Great Guides: Packages, Libraries, Utilities, & Tools

As a reminder, Greg's Great Guides are intended for beginners and novice-level programmers only. Any type of structured engineering education would likely cover all of these topics in year one (or year zero!).

However, if you have a genuine interest in technology, and would like to spend your free time learning new stuff and building new things, then these guides are for you!

What are you waiting for? Get Going with Greg's Great Guides!

Packages, Libraries, Utilities, & Tools

This guide will walk you through the various installation and configuration steps to ensure that your machine is up to snuff. The packages, libraries, and other tools listed below are simply those that I have found helpful or otherwise valuable.

The list below is by no means comprehensive; you will almost certainly need to install other packages and libraries as you proceed with your bootstrapped technical education. That being said, I have taken extra caution to ensure that none of these commands will alter your machine's ability to perform its day-to-day operations. I've also refrained from including any packages or libraries associated with virtual environments, as those tend to have highly machine-specific installation processes.

TL/DR; All of the commands listed below will not interfere or negatively impact your machine's existing configuration in any way.

Contents

Applications

Before we head to the terminal, there are four applications you should probably install if you plan on learning more about software development.

  • Xcode - Apple's IDE for macOS and iOS development
    • Once Xcode is installed, make sure you open it and run it so that you can click "Agree" on all of the various terms & conditions documents
  • iTerm2 - A user-friendly replacement for Apple's terminal application
  • Atom - Awesome text editor from GitHub. They also have a beta build and a nightly build
  • Keybase - Not required, more of a cool bonus.

Once you have those applications installed and have verified that they are all running smoothly, go ahead and open all four applications. Now we're ready to go!

If you haven't already run through Greg's Great Guide for your Global Git Config, you should probably go do that now, then come back here.

Setup

Before we can begin installing new libraries or packages, we need to make sure we have the necessary tools in place to manage them.

I've omitted the usual $ sign at the beginning of each command so that you can directly copy & paste them into your terminal if you like.

Ensures that Xcode properly communicates with terminal commands

xcode-select --install

The missing package manager for macOS.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Check to see if Homebrew was properly installed:

brew --version

Install

Packages

Now that our setup is complete, let's start installing some useful stuff via our new Homebrew package manager!

Here you can view a list of the most commonly installed Homebrew packages over the past year. This list includes dependencies, i.e. packages that were not explicitly installed by users but that were installed by default when grouped with other packages. If you want to view a list of the most common packages that were explicitly installed by users, you can do so here.

Languages & Frameworks

I recommend skipping this section and returning to it once you've read the rest of this guide and are more familiar with how your mac is set up

Below is a list of popular languages & frameworks that can be installed via Homebrew. Be careful before installing these, as some of them already come installed with macOS and installing them view Homebrew will overwrite the defaults in your system. For the most part, this is actually a good thing, as it's helpful to have all of primary working tools installed from the same place, with the same paths, etc. But regardless, you should read more about it first (installing python via Homebrew, installing git via Homebrew, etc).

brew install node python git ruby postgresql go cmake vim mysql sqlite

For certain languages & frameworks like Python, Ruby, & Node, it's likely that different projects will use different versions of each, so you'll need a way to manage different versions of these languages & frameworks locally. The most popular version managers for each language can be installed below.

brew install pyenv rbenv nvm pipenv

Standard Homebrew Packages

Below is a list of libraries and packages that are indisputably "standard", meaning that everybody uses them and they've been around forever. Subsequently, you can assume that they're safe since millions of people have been using them for decades. These packages can be installed safely on your system without creating conflicts or any other problems. So... you should install these!

You can google each package/library to figure out what it does, or you can just trust, install them, and move on.

brew update
brew install cask
brew install wget
brew install curl
brew install ffmpeg
brew install htop
brew install nmap
brew install watch
brew install irssi
brew install bash-completion
brew install geoip
brew install webp
brew install imagemagick
brew install wifi-password
brew install archey
brew install tldr
brew install xpdf
brew install watchman
brew install terraform
brew install speedtest-cli
brew install links
brew install mas
brew install trash
brew install midnight-commander
brew install jq

Standard Homebrew Quick Look Plugins

I would also highly recommend installing a number of Quick Look plugins that significantly improve overall usability of your mac. Quick Look is the quick preview feature used by macOS that lets you preview file contents before actually opening them up. These plugins supercharge that preview feature.

brew update
brew cask install qlcolorcode qlstephen qlmarkdown qlvideo qlimagesize quicklook-json quicklookase betterzip suspicious-package webpquicklook

Common Developer Platform Homebrew Packages

Many popular developer tools & platforms, such as Amazon AWS, Microsoft Azure, Google Cloud Platform, and others, have their own CLI & SDK tools that can be installed via Homebrew.

brew update
brew install hub github/gh/gh
brew install awscli
brew install docker docker-compose
brew install kubernetes-cli
brew install heroku/brew/heroku
brew cask install google-cloud-sdk
brew install azure-cli
brew install doctl
brew tap linode/cli && brew install linode-cli
brew install platformio

Git & GitHub Packages

Many of these were also included in other sections, but it's worth calling them out individually.

Friendly little guy that helps brings GitHub functionality to your terminal.

brew update
brew install hub

Released in beta on February 13th, 2020, GitHub now offers their own official CLI tool. It sounds like the intent is to replace hub with a more feature-rich, fully-supported version that essentially does the same thing: brings GitHub to your terminal.

brew update
brew install github/gh/gh

A library that adds some supercharged commands for Git Flow, as authored by nvie.

brew update
brew install git-flow-avh

Quick Blog Setup

Quick & easy blog setup via Ruby, rbenv, bundler, & Jekyll

Replace the standard Ruby installation with the better version from Homebrew:

brew update
brew install ruby
# Add it to your path
export PATH=/usr/local/opt/ruby/bin:$PATH

Now close and relaunch your terminal, and run which ruby. You should see the below output:

which ruby
# /usr/local/opt/ruby/bin/ruby

rbenv (Important)

Install rbenv to effortlessly manage different ruby installations & versions:

# Install rbenv and ruby-build
brew update
brew install rbenv

# Setup rbenv integration to your shell
rbenv init

# Check your install
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

You should see something like this confirming your successful installation:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for 'rbenv' in PATH: /usr/local/bin/rbenv
Checking for 'rbenv shims' in PATH: OK
Checking 'rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20200115)
Counting installed Ruby versions: 2 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

Restart your terminal to make sure the changes take effect. Now you can install different Ruby versions like so:

rbenv install 2.6.3
rbenv global 2.6.3
ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580)

Install Bundler and Jekyll

Install bundler and jekyll:

gem install --user-install bundler jekyll

Get your Ruby version by running ruby -v:

ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580)

Then append your path file with the following, replacing the X.X with the first two digits of your Ruby version:

export PATH=$HOME/.gem/ruby/X.X.0/bin:$PATH

Check that your gem paths point to your home directory by running:

gem env

I've truncated the output to show the GEM PATHS attribute pointing towards my home directory:

$ gem env
...
  - SYSTEM CONFIGURATION DIRECTORY: /Users/greggallen/.rbenv/versions/2.6.3/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-19
  - GEM PATHS:
     - /Users/greggallen/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0
     - /Users/greggallen/.gem/ruby/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
...
⌘ ~/github/kernel-api-v1 (master)

You now have a perfectly configured & flexible ruby installation, complete with both bundler and jekyll too!

Mobile Packages

Install the below packages to prepare your system for mobile development:

brew update
brew install carthage swiftlint

GIS Tools

SSInstall the below packages for GIS development

brew update
brew install gdal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment