\documentclass[13pt]{beamer}

\input{poem.tex}

%%%%%%%%%%%%%%%%%%%
% Commands/macros %
%%%%%%%%%%%%%%%%%%%
\newcommand{\link}[1]{
  \begin{flushright}
    \scriptsize{#1}
  \end{flushright}
}

\newcommand{\header}[1]{
  \hspace{-1em}\textit{#1:}
}

\newcommand{\sheader}[1]{
  \vspace{1.5em}
  \header{#1}
}

%%%%%%%%%%%%%%%%
% Header/theme %
%%%%%%%%%%%%%%%%
%\usetheme[
%  pageofpages=of,
%  alternativetitlepage=true,
%]{Torino}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\setbeamersize{text margin left=20mm} 
\setbeamersize{text margin right=10mm} 
\setbeamerfont{frametitle}{size={\fontsize{15}{16}}}

% Import packages
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{graphics}
\usepackage{hyperref}
\usepackage{ulem}
\usepackage{listings}

%%%%%%%%%%%%%%%%%%%%
% Title page setup %
%%%%%%%%%%%%%%%%%%%%
\subject{%
  abcs,
  unix,
}

\keywords{%
  abc,
  abcs
  unix,
  commands,
}

\title[ABC's of Unix]{%
  The ABC's of UNIX
}

\author[Spencer]{%
  Andy Spencer
}

\date[2018-08-18]{%
  August 18, 2018 \\
  \small{San Fernando Valley Linux Users Group}
}

%%%%%%%%%%%%%%%%%
% Content pages %
%%%%%%%%%%%%%%%%%

\begin{document}

%%%%%%%%%%%%%%%%
% Introduction %
%%%%%%%%%%%%%%%%

\begin{frame}[plain]
  \titlepage
\end{frame}

\section{The ABC's}

% A is for awk
\framea
\begin{frame}{\abca}
  \header{awk is}
  \begin{itemize}
    \item Aho Weinberger Kernighan
    \item a text processing utility
    \item See also: sed, perl, python
  \end{itemize}

  \sheader{Some other ``A'' programs}
  \begin{itemize}
    \item[at] schedule jobs \textit{at} a given time
    \item[alsa] sound system
  \end{itemize}
\end{frame}

% B is for biff
\frameb
\begin{frame}{\anda \\ \abcb}
  \header{biff is}
  \begin{itemize}
    \item an email notification program
    \item traditionally a command line program
    \item the original ``You've got mail''
    \item possibly named after a dog
  \end{itemize}

  \sheader{Some other ``B'' programs}
  \begin{itemize}
    \item[bc] a command line calculator
    \item[bash] the standard GNU shell
    \item[bison] parser generator
  \end{itemize}
\end{frame}

% C is for cc
\framec
\begin{frame}{\abcc}
  \header{cc is}
  \begin{itemize}
    \item the C Compiler
    \item one step in the compile process
    \item GCC is the most common these days
    \item See also: cpp, as, ld
  \end{itemize}

  \sheader{Some other ``C'' programs}
  \begin{itemize}
    \item[cd]  change directory (shell command)
    \item[cat] ``concatenate'' files
    \item[cron] run scheduled jobs
  \end{itemize}
\end{frame}

% D is for dd
\framed
\begin{frame}{\andc \\ \abcd}
  \header{dd is}
  \begin{itemize}
    \item binary file copy utility
    \item can skip, seek, copy by blocks, swap bytes, convert encodings, etc
  \end{itemize}

  \sheader{Some other ``D'' programs}
  \begin{itemize}
    \item[dc] a reverse polish calculator \textit{(andy's favorite!)}
    \item[ddd] a fancy C debugger
    \item[dbus] Don't make a fuss, get on D-Bus!
  \end{itemize}
\end{frame}

% E is for emacs
\framee
\begin{frame}{\abce}
  \header{emacs is}
  \begin{itemize}
    \item a text editor
    \item extremely configurable
    \item one of the first ``free software'' programs
  \end{itemize}

  \sheader{Some other ``E'' programs}
  \begin{itemize}
    \item[eclipse] A more modern IDE
    \item[ed] the \emph{standard} editor
  \end{itemize}
\end{frame}

% F is for fsck
\framef
\begin{frame}{\ande \\ \abcf}
  \header{fsck is}
  \begin{itemize}
    \item the ``file system checker''
    \item used to repair broken file systems
    \item not used as much on journalizing filesystems
  \end{itemize}

  \sheader{Some other ``F'' programs}
  \begin{itemize}
    \item[fortune] where I learned my ABC's!
    \item[find] search for files
    \item[fdisk] format partition table
    \item[ftrace] trace kernel code calls
  \end{itemize}
\end{frame}

% G is for grep
\frameg
\begin{frame}{\abcg}
  \header{grep is}
  \begin{itemize}
    \item a text search utility
    \item named after g/re/p from old UNIX editors
  \end{itemize}

  \sheader{Some other ``G'' programs}
  \begin{itemize}
    \item[git] version control
    \item[gimp] powerful image editor 
    \item[gpg] public key encryption
    \item[g*] GNU/GTK/Gnome programs
  \end{itemize}
\end{frame}

% H is for halt
\frameh
\begin{frame}{\andg \\ \abch}
  \header{halt is}
  \begin{itemize}
    \item a way to shutdown your computer
    \item can call other command such as kexec
    \item see also: shutdown, reboot, init, telinit
  \end{itemize}

  \sheader{Some other ``H'' programs}
  \begin{itemize}
    \item[head] print first few lines of files
    \item[hexdump] convert binary to hexadecimal
    \item[htop] command line process monitor
  \end{itemize}
\end{frame}

% I is for indent
\framei
\begin{frame}{\abci}
  \header{indent is}
  \begin{itemize}
    \item a source code formatter
    \item used to convert brace styles, indentation, etc
  \end{itemize}

  \sheader{Some other ``I'' programs}
  \begin{itemize}
    \item[info] GNU help browser
    \item[inkscape] SVG image editor
    \item[irssi] IRC client
    \item[ip/iw] configure network interfaces
    \item[iptables] configure firewalls
  \end{itemize}
\end{frame}

% J is for join
\framej
\begin{frame}{\andi \\ \abcj}
  \header{join is}
  \begin{itemize}
    \item a relational operator
    \item matches lines in two different files
    \item see also: cut, paste, cat
  \end{itemize}

  \sheader{Some other ``J'' programs}
  \begin{itemize}
    \item[jobs] show background processes
    \item[j*] java programs
  \end{itemize}
\end{frame}

% K is for kill
\framek
\begin{frame}{\abck}
  \header{kill is}
  \begin{itemize}
    \item the UNIX Task Manager
    \item can signal processes
    \item see also: pkill, killall
  \end{itemize}

  \sheader{Some other ``K'' programs}
  \begin{itemize}
    \item[keymap] linux keyboard mappings
  \end{itemize}
\end{frame}

% L is for lex
\framel
\begin{frame}{\andk \\ \abcl}
  \header{lex is}
  \begin{itemize}
    \item a lexical analyser or ``lexer''
    \item often used to create programming languages
    \item See also YACC/bison/flex
  \end{itemize}

  \sheader{Some other ``L'' programs}
  \begin{itemize}
    \item[latex] you're looking at it!
    \item[lynx] and friends
    \item[libreoffice] office software
  \end{itemize}
\end{frame}

% M is for more
\framem
\begin{frame}{\abcm}
  \header{more is}
  \begin{itemize}
    \item a paginator
    \item prints out a file or command output page by page
    \item less is a more advanced version which can scroll up
  \end{itemize}

  \sheader{Some other ``M'' programs}
  \begin{itemize}
    \item[most] yet another paginator
    \item[mkfs] format filesystems
    \item[mpd] music player daemon
    \item[make] the \emph{standard} build system
    \item[man] manual pages (better than info!)
  \end{itemize}
\end{frame}

% N is for nice
\framen
\begin{frame}{\andm \\ \abcn}
  \header{nice is}
  \begin{itemize}
    \item used to control process priority
    \item only for the default process scheduler
    \item see also: ionice, chrt, taskset
  \end{itemize}

  \sheader{Some other ``N'' programs}
  \begin{itemize}
    \item[ntp] syncs your clocks
    \item[nmap] port scanner
    \item[netstat] show network connections
  \end{itemize}
\end{frame}

% O is for od
\frameo
\begin{frame}{\abco}
  \header{od is}
  \begin{itemize}
    \item ``octal dump''
    \item can also dump out hex, binary, floating point, etc
  \end{itemize}

  \sheader{Some other ``O'' programs}
  \begin{itemize}
    \item[objdump] disassembler and more
  \end{itemize}
\end{frame}

% P is for passwd
\framep
\begin{frame}{\ando \\ \abcp}
  \header{passwd is}
  \begin{itemize}
    \item used to change your login password
    \item see also: shadow, pam, getent, htpasswd
  \end{itemize}

  \sheader{Some other ``P'' programs}
  \begin{itemize}
    \item[patch] apply source code patches
    \item[ps/pstree] print running processes
    \item[ping] pong!
    \item[pv] pipe viewer
  \end{itemize}
\end{frame}

% Q is for quota
\frameq
\begin{frame}{\abcq}
  \header{quota is}
  \begin{itemize}
    \item used to limit disk usage
    \item see also: limit, ulimit
    \item (I've never actually used it)
  \end{itemize}

  \sheader{Some other ``Q'' programs}
  \begin{itemize}
    \item[qemu] VM / emulator
  \end{itemize}
\end{frame}

% R is for ranlib
\framer
\begin{frame}{\andq \\ \abcr}
  \header{ranlib is}
  \begin{itemize}
    \item generates an index for an archive
    \item used during the compile process
  \end{itemize}

  \sheader{Some other ``R'' programs}
  \begin{itemize}
    \item[rename] rename things
    \item[rsync] copy files between computers
    \item[rtorrent] bit torrent client
  \end{itemize}
\end{frame}

% S is for spell
\frames
\begin{frame}{\abcs}
  \header{spell is}
  \begin{itemize}
    \item a spell checker
    \item common version include: ispell, aspell (GNU), myspell/hunspell (OpenOffice)
  \end{itemize}

  \sheader{Some other ``S'' programs}
  \begin{itemize}
    \item[ssh] remote login
    \item[sed] \emph{the} stream editor
    \item[su/sudo] also makes you the boss
    \item[screen] terminal multiplexer
    \item[strace] trace system calls
  \end{itemize}
\end{frame}

% T is for true
\framet
\begin{frame}{\ands \\ \abct}
  \header{true is}
  \begin{itemize}
    \item very simple
    \item just returns ``true''
    \item .. unless you're talking about GNU true
    \item see also: false
  \end{itemize}

  \sheader{Some other ``T'' programs}
  \begin{itemize}
    \item[tex] you're looking at it!
    \item[tar] \sout{tape} archiver
    \item[tac] like cat, but backwards
  \end{itemize}
\end{frame}

% U is for uniq
\frameu
\begin{frame}{\abcu}
  \header{uniq is}
  \begin{itemize}
    \item used to remove duplicate lines
  \end{itemize}

  \sheader{Some other ``U'' programs}
  \begin{itemize}
    \item[uname] show kernel version
    \item[un*] unzip/unxz/unshare/umount
  \end{itemize}
\end{frame}

% V is for vi
\framev
\begin{frame}{\andu \\ \abcv}
  \header{vi is}
  \begin{itemize}
    \item a text editor
    \item also vim, elvis, vile, nvi, busybox
  \end{itemize}

  \sheader{Some other ``V'' programs}
  \begin{itemize}
    \item[vlc] media player
    \item[vnc] remote desktop
  \end{itemize}
\end{frame}

% W is for whoami
\framew
\begin{frame}{\abcw}
  \header{whoami is}
  \begin{itemize}
    \item used for scripting
    \item prints your username
  \end{itemize}

  \sheader{Some other ``W'' programs}
  \begin{itemize}
    \item[wireshark] network analyzer
    \item[wine] run windows programs
    \item[wc] count works or lines
    \item[watch] watch watch watch
    \item[wget] download stuff
  \end{itemize}
\end{frame}

% X is, well, X
\framex
\begin{frame}{\andw \\ \abcx}
  \header{X is}
  \begin{itemize}
    \item the display server
    \item used for (almost) all graphical interfaces
    \item ``the largest program that doesn't actually do anything'' -somebody
    \item see also: wayland, mir, directfb
  \end{itemize}

  \sheader{Some other ``X'' programs}
  \begin{itemize}
    \item[send stuff to | ] xargs
    \item[xournal] annotate pdfs
    \item[xxd] another hex dumper
  \end{itemize}
\end{frame}

% Y is for yes
\framey
\begin{frame}{\abcy}
  \header{yes is}
  \begin{itemize}
    \item used to repeat a line
    \item answers ``yes'' to any prompt
  \end{itemize}

  \sheader{Some other ``Y'' programs}
  \begin{itemize}
    \item[yacc] yet another compiler compiler
    \item[youtube-dl] download music/videos
  \end{itemize}
\end{frame}

% Z is for zcat
\framez
\begin{frame}{\andy \\ \abcz}
  \header{zcat is}
  \begin{itemize}
    \item a like cat for compressed files
    \item used for gzip files (Lempel-Ziv coding - LZ77)
    \item see also: bzip2, lzma, lzop, zx
  \end{itemize}

  \sheader{Some other ``Z'' programs}
  \begin{itemize}
    \item[zsh] bash with more completion
    \item[zathura] pdf viewer
    \item[zenity] command like dialogs
  \end{itemize}
\end{frame}

\end{document}
