diff --git a/year3/semester1/CT3536: Games Programming/notes/CT3536-Notes.pdf b/year3/semester1/CT3536: Games Programming/notes/CT3536-Notes.pdf index 2e03a9af..090e0940 100644 Binary files a/year3/semester1/CT3536: Games Programming/notes/CT3536-Notes.pdf and b/year3/semester1/CT3536: Games Programming/notes/CT3536-Notes.pdf differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/screenshot.png b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/screenshot.png new file mode 100644 index 00000000..ddeda5c4 Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/screenshot.png differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/terminal.png b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/terminal.png new file mode 100644 index 00000000..5bf13b4e Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/terminal.png differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/vim_logo.png b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/vim_logo.png new file mode 100644 index 00000000..b450bca6 Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/images/vim_logo.png differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.pdf b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.pdf index 627392ad..a2123082 100644 Binary files a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.pdf and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.pdf differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.tex b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.tex index 1876d951..9401dee4 100644 --- a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.tex +++ b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/presentation/presentation.tex @@ -1,8 +1,13 @@ %! TeX program = lualatex \documentclass[]{beamer} + \setbeamercolor{title}{fg=black} \setbeamercolor{frametitle}{fg=black} +\setbeamercolor{caption}{fg=black} +\setbeamercolor{caption name}{fg=black} + \setbeamertemplate{navigation symbols}{} +\setbeamertemplate{itemize item}{\color{black}$\bullet$} % packages \usepackage{fontspec} @@ -29,12 +34,200 @@ \usepackage{titlesec} \author{Andrew Hayes (ID: 21321503)} -\title{CT3112 Professional Skills: Assignment 01} -\subtitle{Overview of My Second Year Software Engineering Project} +\title{Why Vim is My Favourite Text Editor} +\subtitle{CT3112 Professional Skills: Assignment 01} \institute{University of Galway} \begin{document} +\titlegraphic{\includegraphics[width=3cm]{./images/vim_logo.png}} \frame{\titlepage} +\begin{frame}{Introduction} + By the end of this presentation, I intend for you to have gained an understanding of: + \begin{itemize} + \item What Vim is and how it works. + \item The benefits of Vim. + \item The drawbacks of Vim. + \item Why I prefer Vim for all my text-editing work. + \item Whether or not Vim might be the right text editor for you. + \item What alternatives there are to Vim. + \item How you can get started with Vim. + \end{itemize} +\end{frame} + +\begin{frame}{What is Vim?} + \begin{itemize} + \item \textbf{Vim} is terminal-based, modal text editor released in 1991, designed to be minimal \& fast to + use. + \item It has a number of fast, mnemonic keybindings that make typical text-editing tasks much faster. + \item A \textbf{terminal-based} text editor is a text-only editor that is ran from the command line or + terminal. + \item A \textbf{modal} text editor is one in which there are a number of different \textbf{modes} that the + editor can be in at any one time. + \end{itemize} +\end{frame} + +\begin{frame} + \begin{figure}[h] + \includegraphics[width=\textwidth]{./images/screenshot.png} + \caption{A Screenshot of Vim Being Used to Write this Presentation (in {\LaTeX})} + \end{figure} +\end{frame} + +\begin{frame}{What is a Terminal?} + \begin{itemize} + \item A \textbf{terminal} is a text-based interface for a computer, originating from when computers did not + have any graphics. + \item It is typically interacted with via a \textbf{command line}, where text commands are written to start + programs. + \item To start Vim from the command line, simply type \mintinline{bash}{vim file_name.txt} + \end{itemize} + + \begin{figure}[h] + \includegraphics[width=0.4\textwidth]{./images/terminal.png} + \caption{A Computer Terminal from 1978} + \end{figure} +\end{frame} + +\begin{frame}{What are the Vim Modes?} + \begin{itemize} + \item \textbf{Normal mode} (\texttt{ESC}) is for the navigation \& manipulation of the text in the file + being edited, via the shortcut keybindings. + It is the default mode of the program. + \item \textbf{Insert mode} (\texttt{i}) is for inserting new text. This mode is similar to the + default to the default behaviour of a more conventional text editor such as Notepad: text can be typed + or removed with the backspace key, and navigation or selection can be done with the mouse or arrow + keys. + \item \textbf{Visual mode} (\texttt{v}) is for the selection of text blocks for manipulation, with the + selected text being highlighted, similar to selecting text with the mouse in other text editors. + Visual mode has two sub-modes: \textbf{visual block} (\texttt{CTRL+v}) \& \textbf{visual line} + (\texttt{V}), in which text can be selected either vertically by columns or horizontally by line. + \end{itemize} +\end{frame} + +\begin{frame}{What are the Vim keybindings?} + \begin{itemize} + \item Too many to list here! + \item Navigation in normal mode can be done with the \texttt{hjkl} (direction) keys, which correspond to + the left, down, up, \& right arrow keys respectively, allowing quick navigation without removing your + fingers from the home row. + \item These direction keys can be combined with numbers to repeat them a certain number of times, e.g.: + \texttt{5j} moves the cursor down 5 lines. + \item There are also a number of other direction keys: \texttt{w} to go forward a word of text, \texttt{b} to + go back a word of text, \texttt{gg} to go to the start of the file, \texttt{G} to go to the end of the + file. + \end{itemize} +\end{frame} + +\begin{frame}{What are the Vim keybindings?} + \begin{itemize} + \item Vim keybindings typically take the form \textbf{action + direction}, i.e. the first key pressed + indicates the action to be performed and the second key pressed indicates the direction in which to do + it. + \item The most common action keys are \texttt{d} to delete text, \texttt{c} to change text, \texttt{y} to copy + (or \textbf{yank}) text, and \texttt{p} to paste text. + \item The action keys are combined with direction keys, e.g. \texttt{dG} deletes all the text from the cursor + to the end of the file, \texttt{y5w} copies the next 5 words to the clipboard, etc. + \item If you're trying to get the hang of Vim keybindings, the most important one for you to know is + \texttt{u} to undo the last action you performed, in case you made a mistake! + \end{itemize} +\end{frame} + +\begin{frame}{What are the benefits of Vim?} + \begin{itemize} + \item Lightweight \& minimal. + \item Speedy text editing with countless keybindings \& shortcuts. + \item Easy integration with other command-line programs. + \item Endlessly extensible through its configuration file (found at \mintinline{shell}{~/.vimrc}) + \item Lots of community-developed plugins to extend its functionality even further. + \item It's very easy to quickly record a \textbf{macro} to perform an option repeatedly. + \item Standard on most modern UNIX-like systems; if you use a Linux-based system or MacOS, you likely already + have it installed! + \item Most IDEs have a Vim mode, allowing you to use the Vim keybindings in many other programs too. + \end{itemize} +\end{frame} + +\begin{frame}{What are the drawbacks of Vim?} + \begin{itemize} + \item Steep learning curve: there are so many keybindings that almost nobody knows them all. + \item No graphics support: because it's terminal-based, there is no way to display an image inside Vim. + \item Only works for plaintext editing: can't be used to edit Word documents or PowerPoint presentations. + \item Very minimal by default: it requires a lot of configuration to bring it to feature parity with a modern + IDE. + \item Requires some knowledge of the terminal: not suited for people who have no technical background. + \end{itemize} +\end{frame} + +\begin{frame}{Why I prefer Vim} + \begin{itemize} + \item I spend most of my time on my computer editing plaintext code files, so the speed gained from using the + Vim keybindings is invaluable. + \item As a Linux user and programmer, I spend a lot of time in the terminal, so having a terminal-based editor + is very convenient for me. + \item Often for internship work, I will have to remotely connect to a server to edit its configurations and + the only text editor available is Vim. + \item I enjoy the fine-grained control over the program's behaviour that the Vim configuration file affords + me. + \item I think it looks cooler than other text editors! + \end{itemize} +\end{frame} + +\begin{frame}{Is Vim right for you?} + \begin{itemize} + \item Vim is right for you if spend a lot of time editing plaintext files, using the terminal, or remotely + accessing servers and you don't mind its steep learning curve. + If you want fine-grained control over the behaviour of your text editor, and the ability to endlessly + extend it, then Vim is a good choice. + It helps a lot if you have a technical background, but anyone can learn Vim! + \item Vim is not right for you if you rely heavily on graphical editors, e.g. Microsoft Word or PowerPoint, if + you don't want to spend time learning the keybindings, or if you want a text editor that is feature-rich + out of the box without any customisation. + If you rarely use the terminal in your day-to-day life, then a terminal-based text editor likely is not + suitable for your workflow. + \end{itemize} +\end{frame} + +\begin{frame}{What alternatives are there to Vim?} + Similar text editors to Vim include: + \begin{itemize} + \item Emacs + \item Vi + \item Helix + \item Kakoune + \end{itemize} + + More conventional text editors include: + \begin{itemize} + \item Notepad + \item Atom + \item VSCode + \item Fully-featured IDEs such as Eclipse or Intellij. + \end{itemize} +\end{frame} + +\begin{frame}{How can I get started with Vim?} + \begin{itemize} + \item Download \& install Vim from \url{https://www.vim.org/download.php} + \item Open a terminal emulator / command prompt on your computer. + \item Enter \texttt{vim file\_name.txt}, substituting \texttt{file\_name.txt} for the path to the file you + want to edit / create, and start editing! + \item To get a more in-depth tutorial of how to use Vim, run the command \texttt{vimtutor} from your command + prompt to start the tutorial. + \end{itemize} +\end{frame} + +\begin{frame}{Summary} + By now, I hope that you have gained an understanding of: + \begin{itemize} + \item What Vim is and how it works. + \item The benefits of Vim. + \item The drawbacks of Vim. + \item Why I prefer Vim for all my text-editing work. + \item Whether or not Vim might be the right text editor for you. + \item What alternatives there are to Vim. + \item How you can get started with Vim. + \end{itemize} +\end{frame} + \end{document} diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.pdf b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.pdf index e5f27b96..4d8261da 100644 Binary files a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.pdf and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.pdf differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.tex b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.tex index cebd23b2..9d82281b 100644 --- a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.tex +++ b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/report/report.tex @@ -50,7 +50,7 @@ \raggedright \footnotesize Name: Andrew Hayes \\ - E-mail: \href{mailto://a.hayes18@universityofgalway.ie}{a.hayes18@universityofgalway.ie} \hfill\\ + E-mail: \href{mailto://a.hayes18@universityofgalway.ie}{\texttt{a.hayes18@universityofgalway.ie}} \hfill\\ ID: 21321503 \hfill \end{minipage} \begin{minipage}{0.4\textwidth} @@ -70,64 +70,102 @@ \end{center} \hrule +\section{Preparation \& Planning} +The first thing that I considered when I was planning this presentation was my role as a presenter: what information do +I want to convey, and how best to convey it? +After I had chosen my topic (why Vim is my favourite text editor), I asked myself the 6 question: Why, Who, Where, When, +What, \& How. +Most of the time I spent on this presentation was on the preparation \& planning. +I tried to follow the 5:1 ratio: since my presentation was to be 20 minutes long, I prepared for just over 100 minutes. + \begin{itemize} - \item The role of the presenter. - \item Preparation \& Planning: Why, Who, Where, When, What, \& How. - \item Structuring the content for maximum impact: - \begin{itemize} - \item Introduction to the topic. - \item The middle part. - \begin{itemize} - \item Aligned with the introduction. - \item Main topics. - \item Each main topic has sub-topics. - \item Logical sequence. - \begin{itemize} - \item What are the main points I need to address? - \item What does the audience need to know first/second etc? - \item What do they need to know by the end? - \item Are my main points structured in a logical/coherent way? - \item What evidence will I use to support these points? - \end{itemize} - \end{itemize} - \item The conclusion. - \end{itemize} - - The presentation should be written in the following order: - \begin{enumerate} - \item Purpose \& Objective. - \item Middle: main content. - \item End: Summary, conclusions, \& recommendations. - \item Beginning: Introduction/Opening. - \end{enumerate} - - The content should be logical \& understandable. Use storyboards/maps. - Go from simple to complex, presented incrementally, concisely, \& in order. - Use chronological ordering. - Have clear sections \& headings to provide structure. - Lead from one point to another. - - \item Effective delivery techniques. - \begin{itemize} - \item Clarity. - \item Brevity. - \item Concision. - \end{itemize} - \item Stages of the communication process - \begin{itemize} - \item Encoding. - \item Transmission. - \item Decoding. - \item Feedback. - \end{itemize} - \item Barriers to effective communication: - \begin{itemize} - \item Language barriers. - \item Cultural barriers. - \item Technology barriers. - \end{itemize} + \item ``\textbf{Why} am I making this presentation? What is it's purpose?'' + I decided that the purpose of my presentation would be to inform someone about what Vim is, how it works, + and whether or not Vim might be the right text editor for them. + I wanted to inform \& empower the listener to facilitate them beginning their own journey using Vim as their + text editor. + \item ``\textbf{Who} is this presentation for?'' + I decided that I wanted my presentation to be accessible to all people, not just those with a Computer + Science background. + This informed a lot of my decisions throughout the presentation as to how much detail to go into: I wanted + to make sure that anybody could listen to and follow along with my presentation if they were interested in + it. + \item ``\textbf{Where} will this presentation be delivered?'' + The constraints of this assignment dictated that the presentation be submitted as a pre-recorded video, + meaning that I could not have any audience participation or Q\&A sessions. + Because there could be no audience interaction in my presentation, I felt that it was important I made sure + my presentation wasn't just a boring ``death by PowerPoint'' slide after slide of plain text, so I decided + to regularly switch from the presentation slides to a practical demonstration, to keep it engaging \& + interesting for the listener. + \item ``\textbf{When} will this presentation be delivered?'' + Unfortunately, due to the pre-recorded nature of the presentation, I have no control and no knowledge over + when the audience would be seeing my presentation. + If I did have control over this, I would pick the morning-time, when the audience is most awake, alert, \& + interested so the risk of me boring them or the information going over their heads is at its lowest, but + since I didn't have control, I had to prepare for the worst-case scenario. + I had to assume the audience would be bored, hungry, \& tired when viewing my presentation, so I aimed to + make it as engaging, concise, and interesting as I possibly could. + \item ``\textbf{What} do I want to present?'' + Once I knew what my purpose, audience, and constraints were, I needed to consider what information I + actually wanted to present to the audience. + I decided that I wanted a short, pithy, \& concise overview of the subject, with minimal digressions and + plenty of practical examples \& demonstrations, as I felt that this fit my purpose the best. + \item ``\textbf{How} do I want to present my information? + As I was limited to a pre-recorded video, I unfortunately was not able to walk around a stage to make my + presentation more visually interesting or something similar. + I had to focus my effort on the appearance of my presentation slides and the manner in which I conveyed + information. + I decided to keep my slides as minimal as possible, only inserting images where I thought it was important + and avoiding putting huge walls of texts on the slides, just bullet points. + I decided not to use many images as I wanted to keep the slide deck short, and I felt that me switching to + demonstrations regularly would make up for the lack of colour in my slides, instead allowing them to be + streamlined and filled with only the most important \& relevant information. + Since there was no camera on me, just the audio from my laptop microphone, I tried to speak clearly \& + loudly, and tried my best to avoid lip-smacking or saying ``uhhh'' excessively to allow for a more pleasant + listening experience. \end{itemize} +\subsection{Structuring} +I wrote my presentation in the following order: +\begin{enumerate} + \item Purpose \& Objective. + \item Middle: main content. + \item End: Summary, conclusions, \& recommendations. + \item Beginning: Introduction/Opening. +\end{enumerate} +After I had my purpose \& objective determined, I set to writing the ``middle part'', or the slides that would +constitute the bulk of the information in the presentation. +I also loosely scripted the demonstrations that I wanted to perform, and when I wanted to perform them, which I had as +cue cards off-screen. +\\\\ +Then, once I had my content completed, I wrote a conclusion / summary of all the information that I had presented, and +wrote a slide where I recommended whether or not the listener should use Vim, and some alternatives that they might be +interested in. +I decided to move the slide in which I explain how to get set up with Vim at the very end of the presentation, just +before the summary, as I felt that it was important to tell the audience whether or not they should be interested in +setting up Vim for their own use before telling them how to set it up. +I believe that this ensured that I maximised the audience engagement and retention, and maintained chronological +ordering. +\\\\ +I also considered the barriers that might exist to effective communication: language, cultural, \& technological. +In particular, I tried to minimise the technological barriers, as I was speaking about a program that was typically only +used by programmers \& computer scientists, so I wanted to make sure the information was presented in a way that was +accessible to everyone. +\\\\ +Finally, once I had all other content written, I wrote the introductory slides to the topic, which was much easier now +that I knew exactly what content I was introducing. +In the past, I wrote the introductions first, and then had to go back and edit them as my content changed, so writing +the introduction last was a real game-changer for me, and something that I will continue to do into the future. +\\\\ +My goal was to make the content logical, well-structured, \& easy to follow, starting with simple introductory concepts, +and slowly progressing to the complex in an incremental manner. +I tried to give each slide a clear \& concise heading to provide structure to the presentation and to make each point +flow smoothly \& logically to the next point +\section{Presenting} +When I was presenting my slides, I wanted to make sure that I was providing more information than just reading off the +slides, so I added extra information \& demonstrations as I saw fit as I went along, in a loosely-scripted manner. +I tried to ensure that my information \& speech was clear, concise, and as brief as possible without being too short to +convey the information clearly. \end{document} diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission.zip b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission.zip new file mode 100644 index 00000000..1c9d7ffc Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission.zip differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/presentation.mkv b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/presentation.mkv new file mode 100644 index 00000000..63f9db7e Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/presentation.mkv differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/presentation.pdf b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/presentation.pdf new file mode 100644 index 00000000..a2123082 Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/presentation.pdf differ diff --git a/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/report.pdf b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/report.pdf new file mode 100644 index 00000000..4d8261da Binary files /dev/null and b/year3/semester2/CT3112: Professional Skills/assignments/assignment1/submission/report.pdf differ