## What’s All This, Then?

This document is a work in progress, as of the end of July, 2018. Not all of the sections have been written to completion yet, so do check back.

This is a course for programmers and others working with source code,
but it is not a programming course. We may do a little programming here and there, but primarily, this is the other stuff, the supporting technologies that go along with being a programmer that too often get neglected by those working with technology. With that in mind, I’ve named it:

# Everything But The Code

In this course, you will learn several valuable skills that programmers, developers and dev-ops use. Much of it relates to Linux and Unix, but it all works for Windows and Mac users as well.
It’s not a programming course–in fact, it’s everything but.
What I’d like to show you is all of the stuff that goes along with programming, the stuff that too often holds people back.

## Audience - Who is this for?

This course requires more interest than experience. That is, there really aren’t any prerequisites, but this is for people who enjoy hacking away at computers and want to get some new skills.
It’s also perfect for those who have been writing and deploying code, but are missing certain skills that are holding them back.

#### Computers and Operating Systems

Much of the technologies we’ll be using come from the world of Linux and Unix, but I’ve tried to limit what we cover to be usable on Linux, OS X and Windows, (using Git Bash to give us a Unix-like environment.)
All of the software used in this course is open source and/or free to use.

## Use Cases

#### Better Skills

There’s a reason that people work this way–it can be incredibly efficient. Mastering the command line increases your efficency in nearly everything you do. Mastering Git means you can revert to any point in your project’s timeline, to track down where errors originated. Adding GitHub to Git makes coding a social activity–work with others without stomping on each other’s changes.

#### Job Interviews

Interviewers teams more and more want to see what you’ve done on GitHub–it’s the demo reel for a programmer’s career these days. It’s not only a great way to work, it’s a great way to show off your abilities as a coder. Even if you only contribute documentation and perhaps bug fixes to Open Source projects, it shows that you are proactive and detail-oriented.
We’ll set up your GitHub account and learn how to create projects and contribute to others, so you’ll have something to show off during a technical interview.

#### Working With Others

You might be a great coder, developing in the latest and greatest frameworks and technologies, but if you’ve always worked by yourself, storing all of your files on your laptop until you FTP them up to the server to deploy, you’re probably lacking some crucial skills required for team development.
When you get hired, you’ll often be tossed into a team where you can’t keep the company’s whole codebase on a laptop that could get lost, stolen, or have a hard drive failure.
Git and GitHub were made for teams.
You’ll learn how to use git to fork a repository, create a branch, make your changes and merge it all back in, without stomping on anyone else’s changes.

#### Self-Study

If you’re going to keep current with the industry, you’re going to have to dedicate a few hours a week or a month to self-study and there’s no better place to start than YouTube.
The more of the supportive technologies taught in this course that you know, the better you can focus on what you’re being shown in the videos.

# What We’ll Study

## The Unix Filesystem

We’re not going to cover every aspect of the Unix Filesystem, but it’s important to have a good working knowledge of how to get around and where to stash your stuff.
We’ll also take a look at file and directory permissions and learn why they are so important.
Intro to Unix Filesystems

## The Command Line

If you do everything you can to avoid the command line, you’re not alone. The command line frightens a lot of computer professionals. With just a little bit of understanding and a bit of instruction, you can put it to work for you, without the fear of screwing up your system.
Simple things like SSH’ing to a remote server to tail -f a log file can be quite embarrassing if you don’t know how to do them when the time comes.
We’ll be using the BASH shell for Windows, Linux and OSX. It’s a good place to start, as it’s become kind of a ‘universal’ shell. Also, most of the examples online are Bash, so it simplifies looking stuff up.
The Unix Command Line

## SSH Keys

SSH, the secure shell, is how you communicate securely on a computer system. It’s used to prove your identity to a remote system, as well as encrypt your traffic during any and all communications with that system.
We’ll learn how to securely create and deploy ssh keys and how to use them to securely log in to remote servers to use our commandline skills.
SSH Keys

## Editors and IDEs

To a programmer, the choice of a text editor is a very important and personal one. Editors can be lean and fast, or feature-rich and heavy. We’ll be looking at several cross-platform, freely-available editors.
Editors and IDEs

## Git and GitHub

Git is a free and open source distributed version control system. GitHub is where tens of thousands of software developers use Git to collaborate.
Git and Github

## Markdown

Markdown is the programmer’s file format of choice for displaying formatted text. It’s easy, requiring just a few minutes to learn.
Intro to Markdown

## Hexo and GitHub.io Websites

Hexo is a framework for creating websites using Markdown for formatting. It’s a great way to quickly and easily put together an informational site such as this one, using all of the tools and skills we have learned in this course.
GitHub.io describes itself as “Websites for you and your projects” and unlike other hosting providers, it’s closely tied to Git and GitHub.
Hexo and GitHub.io