We are super excited to have you as part of our flagship program here at General Assembly! This README will provide all the information you will need to be successfully oriented into the Web Development Immersive Program.
Please be sure that your computer is up-to-date with the most recent version of your operating system.
Please upgrade to the latest version of OS X, Sierra (10.12).
General Assembly no longer officially supports Windows or Linux in immersive programs. If you have a Windows or a Linux machine, you should contact your Immersive Producer. Instructors may provide support for these operating systems at their own discretion.
If you are on a Windows machine, you must set up your computer to dual-boot Linux Ubuntu before you can get started. Running a VM will not do!
- Agenda
- Consultant Team Introductions
- Icebreakers
- Alumni Panel
- Consultant Q&A
- Program Roadmap
- Expectations & Policies
- Workspace Culture
- Staff Introductions
- Operations
- Outcomes
- Installfest
Orientation is a very packed, busy day for everyone involved! The day will begin promptly at 9:00am and will run until 5:00pm, and is split into two parts: Orientation and Install-fest.
Time | Event |
---|---|
9:00am | Opening and Team Introductions |
9:15am | Icebreakers |
10:00am | Alumni Panel |
10:30am | Break / Equipment Audit |
10:40am | Consultant Panel Q&A |
11:15am | Program Roadmap |
11:30am | Expectations & Policies |
12:00pm | Workspace Culture |
12:15pm | Campus Staff Introductions |
12:30pm | Lunch |
1:30pm | Operations Presentation |
1:45pm | Outcomes Presentation |
2:00pm | Installfest |
5:00pm | Wrap up and Celebration |
Times and Events are subject to change
Throughout the Web Development Immersive program, you will have a dedicated team of Consultants provide you with training, support and direction. During this portion of Orientation you can expect to learn:
- Names of the consultant team members
- How long they have been with General Assembly
- What they were doing prior to General Assembly
- Learn an interesting fact or guilty pleasure from each
- Learn their favorite applications and why
During this portion of orientation, we will begin to break the 'ice' and get to know eachother a bit better!
Here's how to play:
- Write 3 interesting facts on the lined side of a 3x5 index card
- Two of the facts are true and one of the facts will be a lie
- Keep in mind that the lie should be believable like a truth and the truths could be lies
- Cards are collected, shuffled and passed back out
- 'Johnny' starts and reads the facts on the card he holds
- 'Johnny' has 2 guesses to indentify the person whos card he's holding
- After 2 guess, if 'Johnny' is not correct, 'Jane' shares that it's her card
- 'Johnny' now has 2 guesses to try and pick the fact that is the lie
- 'Johnny' highlights which fact is the lie and 'Jane' on blank side of the index card
- 'Jane' goes next and reads the facts on the card she holds
- This continues until everyone has played!
Let's be honest, deciding to make the life changing decision to enroll in this full-time immersive program, most likely came with some questions and possible doubt. This portion of orientation will give you the opportunity to hear from alumni from past Web Development Immersive programs. You can expect to hear:
- Names of each alumni panelist and what they were doing before WDI
- What the alumni do now after successfully completing the program
- What their experience was like in WDI
- What some the challenges were that they faced during their cohorts
- What was something they wish they knew at the start of the program
- Open the floor up for questions
Example questions to ask:
- What do you wish someone had told you? Would you have believed it?
- How long was the gap in time between learning something and feeling comfortable using it?
- What is your learning process on-the-job?
- How important were the projects for your learning and comfort?
- What was it like day-to-day and week-to-week during the program?
- How did you convince someone that you can do the job even though you don't have experience?
- What was your highest level of education? Did your degree matter?
You just heard from various WDI alumni, now is your opportunity to ask the Consultant team questions you'd like answered. From each Consultant, you can expect to hear:
- More about their background and journey
- How they began their careers in web development
- The biggest challenge they had in starting their careers
- Projects they've worked on
Here are some example questions you should ask:
- What do you believe the key to success is in this program?
- What is your personality and communication style?
- How do I keep a positive attitude when things seem impossible?
- Any words of wisdom before we begin this journey?
Web Development Immersive is split into 4 main units. Below you'll find a high level breakdown of what you can expect in each unit:
UNIT 1
- Learn programming fundamentals with JavaScript and practice using basic development tools
- Use HTML and CSS to construct a single page application, and use JS and jQuery to interact with them through the DOM. Use AJAX to communicate with an API
- Project 1 : Build in-browser game utilizing a backend API
UNIT 2
- Revisit programming fundamentals with Ruby, and take our first steps into Rails
- Learn about using SQL databases and persisting data in Rails
- Practice building Rails back-ends that integrate into client-side apps via an API
- Project 2 : Build your first full-stack application
UNIT 3
- Explore building an API in JavaScript using Node.js and Express
- Explore a non-relational database, MongoDB, and integrate it into Express using the Mongoose Objext-Document Mapper. Use Express middleware to add new features to an Express apps
- Project 3 : Build your second full-stack application as a group
UNIT 4
- Learn about a client-side JavaScript framework, Ember.js, and learn how to add it on top of an API
- Capstone Project : Build a full-stack application that will serve as your main portfolio piece
DAY IN THE LIFE OF
Time of Day | Event |
---|---|
9:00am - 9:30am | Diagnostic |
9:30am - 12:00pm | Training Bloc |
12:00pm - 1:00pm | Lunch |
1:00pm - 4:00pm | Training/Workshop |
4:00pm - 5:00pm | 1-on-1 / Workshop |
5:00pm - 10:00pm | Practice/Study |
We take great pride in our Web Development Immersive program! A main reason why our program is so successful is due to very clear expectations and policies we have in place. You will find these below.
First and foremost, to be successful in this program, it is imperative that you understand what a Growth Mindset is and have one!
GROWTH MINDSET DIAGRAM
MUST WATCH The power of belief: Mindset & Success
Please Note : The goal of the program is not to produce working code, working code is a by-product of the goal. The goal of the program is to learn how to create working code.
- Diagnostics will be given regularly, and are designed to reflect recently-covered material
- These diagnostics scores will not impact your completion; they are a tool for you and us to gauge your comprehension of the material
- Don't stress out about these diagnostics, and don't obsess over the results
-
Practice will be assigned semi-regularly, and will be assessed in terms of:
- Code quality (e.g. indentation, good comments, readability, etc.)
- Functionality (Does it run correctly? Is it robust? Is it efficient?)
-
However, as important as doing your practice work is, remember that the most important thing is what you're learning.
- We will treat you like adults and expect you to behave like adults.
- Disagreements with other students should be resolved on your own.
- As with every rule, there are exceptions. If any student is behaving in a way that is disrespectful and/or dangerous towards their fellow developers, that should be brought to the producer's attention immediately. Similarly, any issues that involved consultants should be brought to the producer's attention immediately
- Please see the 'Code of Conduct' portion of your student enrollment agreement if you have questions about this
- We will do our best to train you with everything we can in the time we have. However, the ultimate responsibility for what you learn lies with YOU.
- If you're having trouble with material, ask questions. See out consultants outside of class. Find extra tutorials online.
- If you're ahead, ask for more work!
- If you arrive after 9:00am you are late. Any training missed is your responsibility to make up.
- If you leave before 5:00pm, you have left early.
- If your late arrivals and early departures exceed 5, you will not successfully complete the program.
-
If you miss more than 3 days regardless of reason, you will not successfully complete the program
-
If you know of a planned absence(s), please contract a producer ASAP
- Program Attendance
- Successful completion of ALL projects
- Submission of all Assignments
- Outcomes Programming Attendance
- Outcomes Programming Participation
- Outcomes Support
- Participation in the Meet & Hire
- Letter and Certificate of Completion
- Participation in sem-anual Graduation Celebration
- You may also request a reference or recommendation from Consultants
Break into groups of three or four. In your group, discuss and outline your expectations of each other as colleagues. Then, we'll share what each group has discussed and record a social contract.
Most groups of developers come up with something like the following:
- Respect is mutually given, not earned; follow Wheaton's Law
- Be an open communicator; do not disengage when working in a group, and practice active listening.
- Be open to constructive feedback; when giving feedback, be specific.
- Take others' intent into account; follow Hanlon's Razor.
- Be collaborative, share freely, and respect others' abilities and preferences.
- Maintain a growth mindset and a good attitude.
- Ask lots of questions, but do your due diligence!
- Leave outside stress and your ego at the door.
- Foster a space where it safe to fail and learn from mistakes.
- Have fun!
Majority of your experiences in the program workspace will have you interact with the consultants, production, outcomes and operations teams. However, there are addition departments working hard, behind the scenes, to ensure your experience along with that of future programs are the best they possibly can be. This portion will allow you to meet some addition friendly faces that you will see around campus. This includes:
- Senior Leadership
- Marketing
- Partnerships
- Classes, Events & Workshops
- Admissions
- Product
- Other Immersive Programs Teams
We want to ensure that you have the best experience possible during your time in WDI! One of the key components to ensure outstanding student experiences is our Operations team.
Who makes up our Operations team? Our Campus Commander and Front-Lines staff.
The Operations team is responsible for so many crucial parts of our campus and programs, that we cannot list them all, but here are several things you could go to them for:
- Adjusting the temperature of the workspace
- Conference room bookings
- Printing
- Office supplies
- Loaner computer
- And many more!
Since we are in a co-working space called, WeWork, there are some additional amenities you'll have access to. But first, we should define what our relationship with WeWork looks like. We rent out our 4 workspace rooms from WeWork. What this means is that we do not own WeWork nor does WeWork own General Assembly! Here are area's that you'll have access to, but are not exclusive to General Assmebly students or staff:
- The Dugout
- Kitchen areas
- Floors 1, 2, 6, 7 (This includes kitchens, conference rooms, phone booths, etc. on those floors)
How do I get access to these amenities you might ask. You have to provide three pieces of information to our Campus Commander:
- Picture of your Photo I.D. / Identification
- Picture of you, shoulder up, with a white background (Selfie)
- First Name, Last Name and Email Address
Once the Campus Commander has these three items FROM EVERYONE, access cards will be created and handed out. PLEASE NOTE No one will receive their access card until all information is collected!
We will be collecting these access cards on your final day of the program.
One of the most valuable resources and benefits from participating in an Immersive Program at General Assembly is our Outcomes Team. Upon successful completion of the Web Development Immersive Program, you will have access to this great resourse! During this segment, you will have a chance to hear from you Outcomes Producer and to get a high level snapshot of what you can expect for Outcomes throughout the course.
You will have much more information provided during your first Outcomes Programming session, so do not worry if every question you have is not answered during this segment!
Follow these instructions to set up your laptop for work in WDI. If you've previously set up a development environment on your computer, you may wish to skip some of these steps; do not do so without first checking with an consultant!
If at any point you are unsure of whether you have done something correctly, ask an consultant. It's important in many cases that we do these steps in order.
The text editor we'll be using in this course is called Atom; it was developed by the GitHub team, and is highly extensible.
Note: From this point forward you will open Atom from the command line
Download Atom from Atom.io
Once finished run the following command:
# Linux Only
sudo dpkg -i atom-amd64.deb
Once Atom is successfully downloaded, open it and in the 'Atom' menu item, click on 'install shell commands' to install the necessary toolkit.
We're going to use Atom's package manager, apm
, to add a number of helpful
extensions to your Atom installation. For each package listed below, run
apm install <name-of-package>
in the terminal to perform the installation.
apm install aligner
apm install aligner-scss
apm install aligner-css
Now that we have some practice with running the 'apm install <package_name>' we do a shortcut where is runs the same command but installs all packages in one go!
apm install aligner-ruby atom-beautify linter-jshint editorconfig esformatter fixmyjs git-diff-details git-history git-plus language-markdown less-than-slash linter linter-csslint linter-eslint linter-markdown linter-rubocop linter-ruby linter-scss-lint linter-tidy markdown-writer sort-lines language-ember-htmlbars
OS X ships with utilities that are slightly different from standard Linux tools.
To smooth out some of the differences, we need to change how OS X loads our
shell (bash
) configuration.
- Make sure that a
.bashrc
file exists in your home directory. In your terminal, type:
touch ~/.bashrc
- Make sure that a
.bash_profile
file exists in your home directory. In your terminal, type:
touch ~/.bash_profile
- Bash is usually configured to load
.bashrc
from.bash_profile
, but OS X doesn't do this by default. So we add a command to do so. In your terminal, type:
echo 'test -f ~/.bashrc && source ~/.bashrc' >> ~/.bash_profile
- Next, we'll look at
.bash_profile
to make sure it has the contents we expect. Type the following in the terminal to look at the contents of the file:
cat ~/.bash_profile
At the bottom, you should have something that looks like this:
# ~/.bash_profile
test -f ~/.bashrc && source ~/.bashrc
- Much of the software we'll be installing goes in
/usr/local/bin
, a directory that OS X doesn't search by default. You will also need to update/etc/paths
to add this directory. In your terminal, type:
echo '/\/usr\/local\/bin/\nd\nwq' | sudo ed /etc/paths
echo '1i\n/usr/local/bin\n.\nwq' | sudo ed /etc/paths
- Finally, let's inspect our changes by typing:
cat /etc/paths
It should look like this:
# /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Those of you who are on Ubuntu already have a powerful package manager, apt
,
built into your operating system. However, OS X doesn't come with a package
manager installed, so we'll be installing a 3rd-party package manager called
Homebrew to install software from the command line. If you're running Linux,
please hold tight until we get to the section on nvm
.
In order for Homebrew to work, we'll need to rely on a number of programs that come pre-installed on Linux. Install these tools via the terminal using the command:
xcode-select --install
This may require that you run a Software Update before proceeding.
- First, enter this command into your terminal:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Homebrew has a built-in diagnostic tool to determine if it's working correctly; you can run it by entering the following command in your terminal:
brew doctor
NOTE: YOUR SYSTEM WILL PROBABLY THROW SOME ERRORS HERE! Some of these errors are probably minor, but some might not be; please wait until one of the consultants has given you the go-ahead before moving on.
- Once Homebrew says
Your system is ready to brew
, run the following command update Homebrew's directory of packages.
brew update
- Lastly, install tidy-html5
brew install tidy-html5
We're going to be installing Node next; Node (and its various packages) will be the foundation of a large part of the course. First, though, we're going to download a tool called NVM that allows us to maintain multiple different versions of Node, in case we want to switch between them for different projects. Then we'll download Node, and use its associated package manager, NPM, to download and install the following Node modules:
- JShint, a tool for testing JavaScript code quality. (
jshint
) - Grunt, a tool for automating background tasks. (
grunt-cli
)
# OSX ONLY
brew install nvm
#LINUX ONLY
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash
Restart your terminal (close it and reopen it; not just the window!)
- Open your
.bashrc
file by typingatom ~/.bashrc
and paste in the following depending on your operating system:
# OSX ONLY
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
#LINUX ONLY
export NVM_DIR="/home/$(whoami)/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
- Use NVM to install the latest longterm stable version of Node (4.4.7)
nvm install --lts=argon
nvm alias default v4
nvm use default
-
Restart your Terminal by quitting the application and re-opening it.
-
AGAIN, Restart your Terminal
-
Finally, use NPM to install the Node modules mentioned earlier and make them available across all of our projects.
Just like we did before with the Atom packages install, we can string together the various packages we'd like installed into one executable command:
npm install -g npm jshint jsonlint grunt-cli remark-lint jscs bower ember phantomjs-prebuilt
If you haven't done so already, go to GitHub and create and account; be sure to write down your username and password somewhere, since we'll be using these credentials later.
Enter the command:
brew install git
Enter the command:
sudo apt-get install git
Now let's take care of some settings.
- Show the current Git branch in the terminal prompt, and tweak Git's EDITOR variable so that commit message pop-ups open in Atom. Run the command:
atom ~/.bashrc
- Paste the following code into the bottom of the file:
# Git
function parse_git_branch {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "("${ref#refs/heads/}")"
}
export PS1="\w \$(parse_git_branch)\$ "
export EDITOR='atom --wait'
export VISUAL='atom --wait'
- Colorize git in the command line
git config --global color.ui true
- Configure Git
git config --global user.name "<yourUsername>"
git config --global user.email "<your_email@example.com>"
git config --global pull.rebase true
git config --global branch.autosetuprebase always
git config --global push.default simple
git config --global branch.autosetupmerge true
git config --global core.editor "atom --wait"
In order to push commits to GitHub from the command line, we need Git and GitHub to have a matching set of SSH keys.
- Generate a new key by running
ssh-keygen -t rsa -C "<your_email@example.com>"
(Feel free to put in a password or select a non-default location for your keys,
but it's not necessary to do so; to move ahead, just keep hitting enter
).
- Add this new key to your system by running:
ssh-add ~/.ssh/id_rsa
- Copy the new key to your clipboard using either:
# OSX ONLY
pbcopy < ~/.ssh/id_rsa.pub
# LINUX ONLY
xclip -selection clipboard < ~/.ssh/id_rsa.pub
- Log into GitHub.com, go to https://github.com/settings/ssh, and paste in your SSH key. To test it out, type the following into the command line:
ssh -T git@github.com
If you get a prompt along the lines of
The authenticity of host 'github.com (xxx.xxx.xxx.xxx)'... can\'t be established.
RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
Are you sure you want to continue connecting (yes/no)?
Just type 'yes'. If everything's working, you should get a response like the following:
Hi yourUsername! You\'ve succesfully authenticated, but GitHub does not provide shell access.
Last thing, now that you have git and GitHub we want this repo on your local computer. Please follow along as I show you how to fork, clone and put the repo in the correct directory.
-
Now that our local machine is set up with Git, we need to
fork and clone
the orientation repo. Once you fork to your Github account, make sure you copy the HTTPS clone link (It will look something likehttps://github.com/<your github name>/orientation.git
) -
In your root directory
cd ~
, let's move to our downloads file bycd Downloads/
, then rungit clone <link copied from github>
. -
Move into the
oritentation
directory bycd orientation/
. Now we have to set up a global 'excludesfile', listing all the files that we might want git to ignore.
git config --global core.excludesfile ~/.gitignore
cp .gitignore ~/.gitignore # from this repository directory
Install hub
hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier. --
hub
README.
brew install hub
After installing hub
, add the following line to your ~/.bashrc
.
eval "$(hub alias -s)"
####Linux ONLY
Paste at a Terminal prompt:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install)"
PATH="$HOME/.linuxbrew/bin:$PATH"
Edit your ~/.bash_profile to add ~/.linuxbrew/bin to your PATH:
echo 'export PATH="$HOME/.linuxbrew/bin:$PATH"' >>~/.bash_profile
Now you need to install some setup-tools:
sudo apt-get install build-essential curl git python-setuptools ruby
You're done! Try installing hub:
brew install hub
Rbenv is a tool that we can use to manage multiple versions of Ruby and determine which version we use for a particular project.
- Install Rbenv
# OSX ONLY
brew install rbenv
Copy and paste this entire line into your terminal and run it.
# LINUX ONLY
curl https://raw.githubusercontent.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash
- Tell Rbenv to use homebrew's directories instead of rbenv's
atom ~/.bashrc
and paste in the following code BEFORE the stuff you pasted
in about Git.
#OSX ONLY
# Rbenv
export RBENV_ROOT=/usr/local/var/rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
atom ~/.bashrc
and paste in the following code BEFORE the stuff you pasted
in about Git.
#LINUX ONLY
# Rbenv
export RBENV_ROOT="${HOME}/.rbenv"
if [ -d "${RBENV_ROOT}" ]; then
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"
fi
- Once you've done this, run the following command to reload the terminal's settings:
source ~/.bashrc
- Note: after installing gems you may need to run this command
rbenv rehash
Rbenv on Linux depends on another library called libffi-dev
. Download and
install it with the following command.
sudo apt-get install libffi-dev
5.Install ruby-build
, a plugin for rbenv.
# OSX ONLY
brew install ruby-build
# LINUX ONLY
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Don't worry if the above step doesn't take. Some Linux machines may not need it.
6.Install version 2.3.1 of Ruby and make it the system-wide default using the command:
rbenv install 2.3.1 && rbenv global 2.3.1
You can see what versions of Ruby rbenv has downloaded by running
rbenv versions
; to see which version you are currently using, type either
rbenv version
or ruby -v
.
Now that you have Ruby installed, you can begin to install gems on your own. However, gems usually come with a lot of unnecessary documentation - let's tell Ruby to skip those by running the following command:
echo 'gem: --no-document' >> ~/.gemrc
Next, we'll go ahead and install Rails. First though, back out of the orientation
repo by running cd ~
. This will move us to the root/home directory.
gem install rails
Here are a couple of other gems we should also install.
gem install bundler
gem install rubocop
gem install scss_lint
Next, we'll download Postgres, a database program that we'll be using for most of the course.
1.First, download and install Postgres.
# OSX ONLY
brew install postgres
Run to install Postgres and its dependencies.
# LINUX ONLY
sudo apt-get install postgresql libpq-dev
2.Then, configure your new Postgres installation by entering the following lines into the console:
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
createdb `whoami`
sudo -u postgres createuser `whoami` -s
sudo -u postgres createdb `whoami`
Whether you're on OS X or Linux, you can test your configuration by running
psql
in the console. To quit, type\q
See https://help.ubuntu.com/community/PostgreSQL if you run into any issues with the installation.
- Finally, install the
pg
gem from the command line so that Ruby programs can communicate with Postgres.
gem install pg
# OSX ONLY
brew install libsass
# LINUX ONLY
sudo apt-get install libsass
If you do not already have Google Chrome, download it now and set it as your default browser.
When done do the following on any page in Chrome:
- Press Command + option + J simultaneously to open up the Chrome inspector
- On the top right of the inspector window there are three dots, click that.
- Goto settings and make sure yours look like the following images.
Suggested
Suggested
You will be sent and invitation to download screenhero, an app that allows you to share your screen with other users. This is a useful tool for remote debugging and pair-programming. Please download this and setup your account when you get your invite via email.
- All content is licensed under a CCBYNCSA 4.0 license.
- All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact legal@ga.co.