Before we begin learning we have to establish a common technological ground across all our machines. It’s important for everyone to have parity across machines so that nobody is left behind or delayed by inconsistent behaviors during lectures and project building.
In these instructions we will install and configure the many different tools used throughout the course. Most of these tools will not be used until several weeks from now. But they are important to install, configure, and test so that any incompatibilities can be discovered and resolved sooner rather than later.
Do not worry about feeling overwhelmed during these steps. Take your time and follow the directions step-by-step as your instructor guides you. Do not be embarassed to ask questions at any time if you are confused or want more information.
Do not skip ahead or rush on any section or step
Rushing will likely result in mistakes that delay the entire class
Follow the instructor as they go through each installation and configuration
You will be exposed to a lot of new technologies and techniques during this process. You do not need to memorize or fully understand what is being done (but there are a lot of notes and comments for those that do). We will be exploring these tools in greater detail later when they are used in the course. By going through the process early you will be prepared to focus on learning rather than configuring and debugging.
Below you will find a brief overview of each of the tools. Exploring these technologies from a high level will build a foundation for understanding them later in the course when they are used.
yum
(RedHat based), apt/apt-get
(Debian based) or pacman
(Arch based) package managerspsql
CLI toolpsql
CLI tool allows us to connect to and manage databases using its SQL REPL interfacewindow
and document
) while adding some that would not be accessible by the browser (like http
and fs
for file system access)Terminal
then accept all defaults while following the instructions$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew --version
# expect the following output (2.X.X, minor versions and commits are arbitrary)
Homebrew 2.1.15
Homebrew/homebrew-core (git revision 66ea9; last commit 2019-10-22)
Homebrew/homebrew-cask (git revision 43442; last commit 2019-10-23)
Terminal
$ brew install postgresql
$ which psql
# should output the following path
/usr/local/bin/psql
$ psql --version
# should output the following, the versions may be different
psql (PostgreSQL) 10.1
Terminal
$ brew install python
Terminal
to confirm the installation was successful$ which python
# should output
/usr/local/bin/python3
.dmg
file at this pointDocker Desktop needs privileged access
prompt select OK
and enter your passwordPreferences
Advanced
tabCPUs
ensure at least 3
cores are allocatedMemory
ensure at least 5GiB
are allocatedSwap
ensure at least 1 GiB
are allocatedTerminal
$ docker --version
# expect the following output, the minor and build details are arbitrary
Docker version 19.XX.X, build X
.dmg
file to display the installer application.pkg
icon that appears to run the installer.dmg
file from your downloads folder at this pointCMD+SPACE
and searching for Terminal
options > keep
in dock for easy access laterNote: the
$
is a common symbol used in documentation to denote a command entered into the terminal (command line instruction)The actual command to enter is what comes after the
$
characterEach line that begins with a
$
denotes a single (distinct) command to enterLines beginning with
#
are commentsLines beginning with neither
$
nor#
are outputs from the previous command
$ which java
# should output the following
/usr/bin/java
$ java -version
# expect the following output, the minor version is arbitrary
java version "1.8.X"
.dmg
file.dmg
file at this pointoptions > keep in dock
for easy access laterTerminal
enter the following commands:# echo is a command used to "echo" or print out a string to the console
# $SHELL is an environment variable in your system that holds the path to your active shell program
# here we are saying "print out the path to my active shell"
$ echo $SHELL
# should output
/bin/bash
If it outputs
/bin/zsh
then you are using the ZShellYou can follow the same steps but replace anything that says
bash
withzsh
Now enter the following command:
# the cat command can be used to display the contents of a file
# if the file is empty you will see a blank output
# if the file has contents you will see them as the output
# if the file doesn't exist you will receive an error output
# this command will display the contents of the .bashrc file in your home (~) directory
# if you are on ZShell enter cat ~/.zshrc
$ cat ~/.bashrc
if you do not receive an error then the file exists and you can skip the next step
if you get the following output:
cat: .bashrc: No such file or directory
then enter the following command:
# touch is a command used to create new files
# this command will create the .bashrc file in your home (~) directory
# if you are on ZShell enter touch ~/.zshrc
$ touch ~/.bashrc
reissue the previous
cat
command to confirm it was created.you can press the up arrow in your terminal to find a previously entered command.
you will receive a blank output since the file was just created
if you receive an error ask your instructor to sort you out
Terminal
to download and run the NVM installer# curl is a CLI tool for making network requests
# here it is used to download the installer script
# the script is then piped (|) to the bash interpreter for execution
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.0/install.sh | bash
Terminal
enter the following command$ nvm --version
# expect the following output, the version may be different
0.35.0
If you receive an error call over your instructor to sort you out
Terminal
# the --lts flag instructs NVM to install the latest long term support version
$ nvm install --lts
# expect the following output, the versions may change as the LTS version changes
Installing latest LTS version.
Downloading and installing node v12.13.0...
Downloading https://nodejs.org/dist/v12.13.0/node-v12.13.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v12.13.0 (npm v6.12.0)
node
and npm
are working by checking their versionsTerminal
$ node --version
# expect the following output, the version is arbitrary and may change as LTS version changes
v12.13.0
$ npm --version
# expect the following output, the version is arbitrary and depends on the current Node LTS
6.12.0
.dmg
file.dmg
file at this pointoptions > keep in dock
for easy access laterYou made it through the installation and configuration. Most of the tedious and frustrating aspects of the course are now behind you. From this point forward you can focus on learning how to use these technologies to build solutions instead of tearing your hair out!