Merge pull request #1 from 0hAodha/CT3112-Assignment-01

CT3112 Assignment 01
This commit is contained in:
2024-02-22 23:11:30 +00:00
committed by GitHub
12 changed files with 289 additions and 58 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

@ -1,8 +1,13 @@
%! TeX program = lualatex %! TeX program = lualatex
\documentclass[]{beamer} \documentclass[]{beamer}
\setbeamercolor{title}{fg=black} \setbeamercolor{title}{fg=black}
\setbeamercolor{frametitle}{fg=black} \setbeamercolor{frametitle}{fg=black}
\setbeamercolor{caption}{fg=black}
\setbeamercolor{caption name}{fg=black}
\setbeamertemplate{navigation symbols}{} \setbeamertemplate{navigation symbols}{}
\setbeamertemplate{itemize item}{\color{black}$\bullet$}
% packages % packages
\usepackage{fontspec} \usepackage{fontspec}
@ -29,12 +34,200 @@
\usepackage{titlesec} \usepackage{titlesec}
\author{Andrew Hayes (ID: 21321503)} \author{Andrew Hayes (ID: 21321503)}
\title{CT3112 Professional Skills: Assignment 01} \title{Why Vim is My Favourite Text Editor}
\subtitle{Overview of My Second Year Software Engineering Project} \subtitle{CT3112 Professional Skills: Assignment 01}
\institute{University of Galway} \institute{University of Galway}
\begin{document} \begin{document}
\titlegraphic{\includegraphics[width=3cm]{./images/vim_logo.png}}
\frame{\titlepage} \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} \end{document}

View File

@ -50,7 +50,7 @@
\raggedright \raggedright
\footnotesize \footnotesize
Name: Andrew Hayes \\ 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 ID: 21321503 \hfill
\end{minipage} \end{minipage}
\begin{minipage}{0.4\textwidth} \begin{minipage}{0.4\textwidth}
@ -70,64 +70,102 @@
\end{center} \end{center}
\hrule \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} \begin{itemize}
\item The role of the presenter. \item ``\textbf{Why} am I making this presentation? What is it's purpose?''
\item Preparation \& Planning: Why, Who, Where, When, What, \& How. I decided that the purpose of my presentation would be to inform someone about what Vim is, how it works,
\item Structuring the content for maximum impact: and whether or not Vim might be the right text editor for them.
\begin{itemize} I wanted to inform \& empower the listener to facilitate them beginning their own journey using Vim as their
\item Introduction to the topic. text editor.
\item The middle part. \item ``\textbf{Who} is this presentation for?''
\begin{itemize} I decided that I wanted my presentation to be accessible to all people, not just those with a Computer
\item Aligned with the introduction. Science background.
\item Main topics. This informed a lot of my decisions throughout the presentation as to how much detail to go into: I wanted
\item Each main topic has sub-topics. to make sure that anybody could listen to and follow along with my presentation if they were interested in
\item Logical sequence. it.
\begin{itemize} \item ``\textbf{Where} will this presentation be delivered?''
\item What are the main points I need to address? The constraints of this assignment dictated that the presentation be submitted as a pre-recorded video,
\item What does the audience need to know first/second etc? meaning that I could not have any audience participation or Q\&A sessions.
\item What do they need to know by the end? Because there could be no audience interaction in my presentation, I felt that it was important I made sure
\item Are my main points structured in a logical/coherent way? my presentation wasn't just a boring ``death by PowerPoint'' slide after slide of plain text, so I decided
\item What evidence will I use to support these points? to regularly switch from the presentation slides to a practical demonstration, to keep it engaging \&
\end{itemize} interesting for the listener.
\end{itemize} \item ``\textbf{When} will this presentation be delivered?''
\item The conclusion. Unfortunately, due to the pre-recorded nature of the presentation, I have no control and no knowledge over
\end{itemize} 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, \&
The presentation should be written in the following order: interested so the risk of me boring them or the information going over their heads is at its lowest, but
\begin{enumerate} since I didn't have control, I had to prepare for the worst-case scenario.
\item Purpose \& Objective. I had to assume the audience would be bored, hungry, \& tired when viewing my presentation, so I aimed to
\item Middle: main content. make it as engaging, concise, and interesting as I possibly could.
\item End: Summary, conclusions, \& recommendations. \item ``\textbf{What} do I want to present?''
\item Beginning: Introduction/Opening. Once I knew what my purpose, audience, and constraints were, I needed to consider what information I
\end{enumerate} actually wanted to present to the audience.
I decided that I wanted a short, pithy, \& concise overview of the subject, with minimal digressions and
The content should be logical \& understandable. Use storyboards/maps. plenty of practical examples \& demonstrations, as I felt that this fit my purpose the best.
Go from simple to complex, presented incrementally, concisely, \& in order. \item ``\textbf{How} do I want to present my information?
Use chronological ordering. As I was limited to a pre-recorded video, I unfortunately was not able to walk around a stage to make my
Have clear sections \& headings to provide structure. presentation more visually interesting or something similar.
Lead from one point to another. I had to focus my effort on the appearance of my presentation slides and the manner in which I conveyed
information.
\item Effective delivery techniques. I decided to keep my slides as minimal as possible, only inserting images where I thought it was important
\begin{itemize} and avoiding putting huge walls of texts on the slides, just bullet points.
\item Clarity. I decided not to use many images as I wanted to keep the slide deck short, and I felt that me switching to
\item Brevity. demonstrations regularly would make up for the lack of colour in my slides, instead allowing them to be
\item Concision. streamlined and filled with only the most important \& relevant information.
\end{itemize} Since there was no camera on me, just the audio from my laptop microphone, I tried to speak clearly \&
\item Stages of the communication process loudly, and tried my best to avoid lip-smacking or saying ``uhhh'' excessively to allow for a more pleasant
\begin{itemize} listening experience.
\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}
\end{itemize} \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} \end{document}