\documentclass{beamer}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{hyperref}
\usepackage{lipsum} % for placeholder text
\graphicspath{{pdf_images/}}


\title{ECON 4530/5530 \\ Computational Economics}
\subtitle{Best Practice of Coding}
\author{Alex Gebben}

\begin{document}

% Title Slide
\begin{frame}
  \titlepage
\end{frame}

%%%%%%%%%%%%%%%%%%

\begin{frame}{What problems have you run into?}
	\begin{centering}
	\begin{itemize}
	\onslide<2->{\item Working directory location}
	\onslide<3->{\item Backslash syntax \texttt{\textbackslash} vs \texttt{/}}
	\onslide<4->{\item What data comes loaded on start?}
	\onslide<5->{\item Forgetting what the code was for}
	\onslide<6->{\item Need to reload from scratch}
	\onslide<7->{\item  What to do when the code fails}
\end{itemize}
\end{centering}
\end{frame}


\begin{frame}{Work flow}
	\only<1-6>{
	At some point you will:
	\begin{itemize}
	\onslide<2->{\item Reload an old project}
	\onslide<3->{\item Share code with others}
	\onslide<4->{\item Run multiple projects at once}
	\onslide<5->{\item Need to load and export data}
	\onslide<6->{\item Need to reproduce a result}
	\end{itemize}

	}

	\only<7>{\huge Let's make life easier (and harder)}
	\only<8>{
% Top half: two columns
\vspace{-0.5em}
\begin{columns}[T,onlytextwidth]
    \column{0.5\textwidth}
	  \includegraphics[width=\textwidth]{clean-slate}
    \column{0.5\textwidth}
    \textbf{Never save a R session}
    \begin{itemize}
        \item{You wont get tangled by lines out of order}
        \item{Makes code reproducible}
        \item{You can update results more easily}
    \end{itemize}

\end{columns}
}
\only<9->{
    Alternatively you can run code to clear all data at the start of each session \texttt{\\usethis::use\_blank\_slate()}  but you will need to install the library \texttt{"usethis"}:
    \begin{enumerate}
\item    \texttt{install.packages("usethis")}
\item \texttt{library("usethis")}
\end{enumerate}
}



\end{frame}
%%%%%%%%%%%%%%
\begin{frame}{R studio Projects}
	\only<1-5>{
	If you are using R studio it is best practice to create a project file. 
	\begin{itemize}
	\onslide<2->{\item Sets the working directory.}
	\onslide<3->{\item Allows all code to use relative paths.}
	\onslide<4->{\item \emph{Advanced:} Can store all packages with the library renv.}
	\onslide<5->{\item \emph{Advanced:} Can use code control with git (more on that later).}
	\end{itemize}
}
\only<6>{ \includegraphics[width=0.9\textwidth]{new-project}}
\only<7->{
\begin{columns}[T,onlytextwidth]
    \column{0.6\textwidth}
	\begin{center}
	  \includegraphics[width=\textwidth]{Project_file.png}
	  \includegraphics[width=0.5\textwidth]{Project_file_Contents.png}
  \end{center}
    \column{0.4\textwidth}
    \begin{enumerate}
	    \item Creates a .Rproj file.
	    \item Open this file from R.
	    \item Saved paths
    \end{enumerate}
\end{columns}

}
\end{frame}
%%%%%%%%%%%%%%%%%%
\begin{frame}{Class Exercise}
	\huge
	Download relevant data

	\normalsize
	It is good practice to store the data is a separate folder in the location of the Rscript. Such as a "Data" folder.
\end{frame}

\begin{frame}{File Management}
	\begin{itemize}
	\onslide<1->{\item Create directories for data}
	\onslide<2->{\item Create Directories for scripts}
	\onslide<3->{\item Make code do most of the cleaning}
	\onslide<4->{\item Clear naming of files}
	\onslide<5->{\item Document all files with a Readme file}
\end{itemize}
\end{frame}
\begin{frame}{Create Directories}
	\begin{itemize}
	\onslide<1->{\item Create directories for data}
	\onslide<2->{\item Create Directories for scripts}
	\onslide<3->{\item Clear naming of files}
	\onslide<4->{\item Document all files with a Readme file}
\end{itemize}
\end{frame}
\begin{frame}{Manage Directories}

\only<1-14>{
\begin{columns}[T,onlytextwidth]
    \column{0.5\textwidth}
	\textbf{Usefull Functions}
	\begin{itemize}
	\onslide<2->{\item \texttt{create.dir()}}
	\onslide<3->{\item\texttt{dir.exists()}}
	\onslide<4->{\item\texttt{file.exists()}}
	\onslide<5->{\item\texttt{list.files()}}
	\onslide<6->{\item\texttt{dir.create()}}
\end{itemize}
    \column{0.5\textwidth}
    \onslide<7->{\textbf{Saving Data}
	\begin{itemize}
	\onslide<8->{\item \texttt{write\_csv()}}
	\onslide<9->{\item \texttt{write\_excel\_csv()}}
	\onslide<10->{\item\texttt{write\_delim()}}
	\onslide<11->{\item\texttt{saveRDS()}}
	\onslide<12->{\item\texttt{ggsave()}}
	\onslide<13->{\item\texttt{write.csv()}}
\end{itemize}
}
\end{columns}
\vspace{1.5em}
\onslide<14>{Many other options in R review \texttt{help()} and the internet.}
}
\only<15>{\includegraphics[width=\textwidth]{DIR.png}}
\only<16>{\includegraphics[width=\textwidth]{DIR2.png}}
\end{frame}

\begin{frame}{Naming Files}
%	\href{https://r4ds.hadley.nz/workflow-scripts.html#fn2'}{For an example DONT LEAVE AS A LINK FOR MY REFRENCE}
	It might be tempting to name your files code.R or myscript.R, but you should think a bit harder before choosing a name for your file. Three important principles for file naming are as follows\:
    File names should be machine readable\: avoid spaces, symbols, and special characters. Don’t rely on case sensitivity to distinguish files.
    File names should be human readable\: use file names to describe what’s in the file.
    File names should play well with default ordering\: start file names with numbers so that alphabetical sorting puts them in the order they get used.
\end{frame}
\end{document}
