# 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, soon adding JavaScript to make your website responsive; lastly by web building scrapers using Pyton.

After this you will be introduced to examples of web servers and web clients; along with templates to build your own.

You are encouraged to use these as models and building blocks for your own ideas. Though this will conclude the Rebel Coding material.

:::tip 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, web applications, and the internet, work.
:::

:::warning 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, changing a few parameters and then unleashing. Beyond lacking integrity, it does nothing for one’s learning.
:::

# Course Objectives
-----------------------------------------

*   **An introduction to the Linux command-line environment**
*   **Building websites with HTML, CSS & JavaScript**
*   **Using Python to build web scrapers**
*   **Comprehending the complete web-app stack**

We walk you through every one of these objectives.

Then you need to be able to put things together.

_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; even if that just means beinga ble to better define what those goals might be.

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 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 (or React?) Clients~~

~~**Step 7:** The Job Market~~

~~**Step 8:** Complete Full-Stack Overview~~

~~After completing the eighth 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. It doesn’t have to be a full-stack application either!

Though you need some mechanism, beyond your resume, to show aspects of your interests and capacity; as resumes are getting tiresome. Yes, they still have their use, though personal projects and network matter almost more.

While it's your personal projects, and social discussions that get someone to read your resume in the first place 😉

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

We just want you to identify an area of interest, 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, or closed-source, 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; it's the layer 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 operational 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 their service, which is located at https://username.github.io.

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

![alt_text](/assets/img/github.sign-in.42221568.png)

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](/assets/img/github.captcha.9b563c85.png)

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

![alt_text](/assets/img/github.survey.fc3f8197.png)

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

![alt_text](/assets/img/github.verify.d4a84b3a.png)

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

![alt_text](/assets/img/github.create-repo.d5651907.png)

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](/assets/img/github.repo-details.0410823c.png)

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 this tab open while you complete [Intro to CLI](/rebel_coding/termintro.html)

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](/assets/img/github.push-repo.7cffe2e2.png)

