Brief intro:
	- Taught at WWU, WCC, WSU, LCSC
	- Graph Neural Analyzer
	- GNA is not really my focus at the moment
	- Mouse retina (CS108 folks know about it)

Why learn about Linux?
	- World's most popular operating system
		+ Android
		+ Routers, home entertainment, etc.
		+ HPC
		+ Servers (Active sites vs. "inactive", NetCraft)
		+ Not so much on the desktop
	- Principles can be applied to OSX
		+ OSX is unix
		+ This class won't cover OSX specifically
		+ Feel free to follow along with the terminal on a mac

Why not learn more about Windows instead?
	- You probably already know how to use it
	- Less common
		+ Dominates PC market
		+ Used in small-scale server rooms
		+ Nearly nonexistant everywhere else
	- I've been a Windows software developer
	- Windows increasingly supports what we'll be learning

What should we learn about Linux?
	- Understand the OS, from the kernel up
		+ CS430 covers the kernel
		+ What is the kernel?
	- Learn to use the command line
		+ Create a text file, two ways
		+ Your program will use it
		+ You might too!
		+ Cygwin
	- The rainforest
		+ All the computers are connected
		+ But part of it can burn down!
			* My chicken coop...
	- How to interact with the kernel
		+ Traditionally, this is done using C
		+ We'll learn that way, but there are others!

How do we learn about Linux?
	- isoptera
	- syllabus, calendar, website
	- book (The Linux Command Line)
	- An online C resource that I haven't picked yet

History of this class:  First time!
	- CS228 always needed systems programming and a lab
	- CS430 always had too much ground to cover
	- Hopefully, CS253 will fix both problems

History:
	- Unix and the letter X
		+ The family tree
		+ A variety of explanations exist online
		+ Started in the 70's
		+ IRIX, AIX, HP-UX, XENIX, etc
		+ Solaris and BSD are the anomolies

Where did they all go?
	- Unix workstations had the features we like
		+ Multitasking
		+ GUI
		+ 3D accelleration
		+ $100K price tag!
	- DOS ran on dollar store hardware
		+ That's how Microsoft got started
	- But then gamers outspent everybody else!
		+ Research, money, rise of x86
	- free has more than one meaning
		+ Does not cost anything
		+ Open source
		+ Stallman, GNU (GNU's Not Unix), and HERD
			* Ninjas...
		+ BSD and legal entanglements
	- Linux was inspired by minix
		+ Not copied from, Tanenbaum...
		+ Named after Linux Torvalds
		+ Torvalds also wrote git
	- Better for less money, so it took over
		+ BSD still stands, but it's fragmented
		+ FreeBSD, NetBSD, OpenBSD, DragonflyBSD
		+ OSX is a strong compeditor

Distributions:
	- Recall that Linux is a kernel
	- You need some other software to use it!
	- Usually:
		+ A shell (BASH, DASH, CSH)
		+ A gui (X11, Android)
			* And a desktop environment on top of X11
			* Like Gnome, KDE, Unity, XFCE, etc.
		+ A remote access server (OpenSSH)

A few common distributions:
	- Debian:  Debra and Ian started it
		+ For old folks
		+ Package management
		+ Ubuntu and many others are derived from it
		+ .deb packages
		+ stable, testing, unstable
			* toy story
	- Ubuntu:  Means human-ness or something
		+ Debian for youth
		+ adjective, animal.  like "Karmic Koala"
	- Red Hat:  Black vs. White hats
		+ Fedora
		+ rpm packages
	- Gentoo: A type of penguin
		+ portage system and emerge
		+ compiling...
		+ No releases
	- Slackware: Church of the Subgenius
		+ no package manager, as of 10 years ago
		+ .tgz "packages"
	- There are a LOT of distributions.

How to start using Linux:
	- You'll have access to isoptera
		+ This works from Windows and OSX
		+ putty and WinSCP
		+ Mac/Linux:  terminal and SSH
		+ Connect to isoptera.lcsc.edu
		+ port 22, protocol is SSH
		+ You'll have to see me about a username and password
	- It's also on the computers in MLH 310
	- Or you can install it on your own computer
	- Most of the time, OSX will do the same thing
		+ But I might give bad advice
	
Starting to learn the command line:
	- Navigating:  ls and cd
	- File tree:  / is the root
		+ A, B, C, etc. on Windows
		+ mounting
	- Another program:  man
	- General note on structure:
		commmand/program SPACE argument1 SPACE argument2 ...
	- argument:  information for the program or command 
		+ Also called a parameter
	- flags:  A special argument starting with -
		+ Settings for that run of the program
		+ Generally not persistent
	- Commands for you to try: who, w, top, finger

Nothing more will I teach you today
	- If we even get here
Ask for an account on isoptera

