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
\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}

View File

@ -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}