# What to expect

A direct guide to the basics of web-development and coding; but you already knew that.

Though we’ll go quickly, providing a foundation upon which you are expected to explore.

First by building your own website using HTML, CSS & JavaScript; then secondly by building scrapers.

After this you will be introduced to examples of web servers and web clients.

And you are encouraged to use these as models and building blocks for your own ideas.

QN: the purpose of first building an HTML, CSS & JavaScript website is not for this to be your end portfolio site. Rather, it is meant as a first step toward understanding how web sites, and web applications, work.

QN: About cheating. Copying parts of code, then implementing them in your project is an unspoken path to learning to code. Copy the code, try to apply it, see how it breaks, and then fix your own implementation.

What we want to avoid is what is known as kitty-scripting; which is copying entire chunks of code, or entire applications, with no idea how the code works. Beyond lacking integrity, it does nothing for one’s learning.

Moving on.

# Course Objectives

  • An introduction to the Linux command-line environment
  • Building websites with HTML, CSS & JavaScript
  • Using Python to build web scrapers

We will walk you through every one of these objectives.

Then you need to be able to put things together; though we also give you a community to help you find the answers to your questions. (Along with models to mimic and compare.)

What if web-development isn’t your passion?!? Yet something tech related is?

We just want you to get your foundations grounded.

There is a final project, which can be on anything you wish. Through the community, or coaching, we gladly help you get closer to your tech goals.

The demonstration of aptitude is all one needs to get into the tech market; we want to give you tools to find your start in a niche, and then enable you to grow beyond!

# How does this work?

Outlined below are four primary steps that will be taken to attain a basic foundation of web development knowledge.

Each step is built on the steps before it; while from the first step you begin coding your personal website!

Step 1: HTML & CSS

Step 2: JavaScript

Step 3: Python / Scrapers

Step 4: The Full-Stack

By the end of our first four steps, you have all the knowledge and practice needed to begin learning the full-stack. And from here we will dive deeper into the specifics using the Activist Project as an example.

Step 5: Django Servers

Step 5: Vue Clients

Step 7: The Job Market

Step 8: Full-System Overview

After completing the eight step you will have a complete foundation of web-development and the knowledge necessary to continue your coding journey wherever you might wish it to take you!

# Personal Project

Your personal project is meant to demonstrate your ingenuity, passion and interests. And it doesn’t have to be a full-stack application either!

Though you need some mechanism, beyond your resume, to show aspects of who you are; as resumes are getting tiresome. Yes, they still have their use, that’s why we spend an entire week focusing on them in Everything You Need to Know.

Sometimes it is your personal projects, and social discussions that get someone to read your resume in the first place 😉

The best part is, like was said, you don’t need to build a full-stack application if you don’t want to!

We just want to identify an area of interest to you, begin exploring it, and provide some insight for others.

Do some research, and prepare a summation of what you’re learning; make it into a series of blog posts? Or maybe you want to learn about machine learning? Or Security?

Rebel Coding has the tools and community to get you started on either of those tracks; and we’re happy to do so.

This book is about getting started; and even for those interested in Security, knowing how the full-stack operates, and being familiar with Linux command line will put you leaps and bounds beyond your peers!

So let’s dig in!

# A Brief History of Computing

One of the best resources for learning about the history of computers, is the history of the Unix machine! Classy name, right?

Computers started by reading punchcards; though eventually a language was developed to make their processes more automated. That language was C, or the seed that would grow into the C language. The system it was designed to build and maintain was call Unix.

A gentleman named Bill Gates soon started developing another system using the BASIC language; and this is how Microsoft as we know it, began.

It is important to note that C and Unix were originally created through the funding of Bell South Atlantic Labs and various US Universities researching computer engineering. Through a few coincidences, and convenient mishaps, C & Unix were made open-source; anyone could read the source code!

Early on, Microsoft differentiated itself from this trend, opting to be built on proprietary code. And now open-source software is a growing norm, with open-source software available for most any application one might like to pursue. While the use of computers so common that a new problem has arisen.

What if one computer isn’t enough?

Enter Kubernetes, and distributed systems!

But this is a conversation for another book.

# Low vs High Level Languages

High versus low level languages refers to the proximity to the assembly code.

What is the assembly code; that’s right above the 1’s & 0’s … the machine’s language.

We focus on some pretty high-level languages, Python (and bash, if you count it) are the lowest we will go in this book.

Though Harvard’s EdX course introduces one to C as well, for those interested.

A primary difference between languages levels is their operations efficiency.

Because the C language is closer to the assembly code, greater precision of action can be defined; creating more resource efficient processes.

For a higher-level language such as Python, many of the processes “under-the-hood” are already defined and can’t be easily adjusted. Interestingly enough, there are some efforts to improve this, see package Cython.

# Registering a GitHub Account

While there are concerns with Github's contracts with ICE, it remains the largest network of open-source projects and developers; hence it is utilized by the Rebel Coding curriculum. Albeit for a very specific reason, Github allows users to also host a website using there service, which is located at https://username.github.io.

Though first we need to sign-up for a Github account ...

alt_text

In the following section, I'll walk you through the sign-in process, and we'll make your first repository; all this is necessary prep for getting your own website built and hosted using Github.

After choosing your username, submitting your email address and password, you'll be asked to verify that you are a real person.

alt_text

Next up is a survey that you do not need to complete, if you don't want to.

alt_text

And finally you'll be asked to verify the email addres that you provided.

alt_text

Now we start getting to the good stuff, let's create your first repository.

alt_text

The trick of this process is three-step. First we need to use a very specific name for this repository by repeating the Github username, followed by '.github.io'; don't forget the dots!

Next we need to make sure not to initialize this repository with a README.

And lastly, make sure that the repository is Public.

alt_text

Now that we have created our repository we have one final step, and that is to take note of the code we will use to connect our newly minted repository with code will later obtain.

Since we will be importing our code from elsewhere we will want to make note of the following git remote add origin command.

I suggest just leaving just leaving this tab open while you complete Intro to CLI

If you choose to either close the tab, or navigate elsewhere, this information will remain available to you when you return to view the repository.

For those seeking access to Rebel Labs, please send us your Github username so we can complete you account set-up.

alt_text