\documentclass[10pt, letterpaper]{article}

% Packages:
\usepackage[
    ignoreheadfoot, % set margins without considering header and footer
    top=2 cm, % seperation between body and page edge from the top
    bottom=2 cm, % seperation between body and page edge from the bottom
    left=2 cm, % seperation between body and page edge from the left
    right=2 cm, % seperation between body and page edge from the right
    footskip=1.0 cm, % seperation between body and footer
    % showframe % for debugging
]{geometry} % for adjusting page geometry
\usepackage{titlesec} % for customizing section titles
\usepackage{tabularx} % for making tables with fixed width columns
\usepackage{array} % tabularx requires this
\usepackage[dvipsnames]{xcolor} % for coloring text
\definecolor{primaryColor}{RGB}{0, 0, 0} % define primary color
\usepackage{enumitem} % for customizing lists
\usepackage{fontawesome5} % for using icons
\usepackage{amsmath} % for math
\usepackage[
    pdftitle={Nicol\'as Gaffney's Resume},
    pdfauthor={Nicol\'as Gaffney},
    pdfcreator={LaTeX with RenderCV},
    colorlinks=true,
    urlcolor=primaryColor
]{hyperref} % for links, metadata and bookmarks
\usepackage[pscoord]{eso-pic} % for floating text on the page
\usepackage{calc} % for calculating lengths
\usepackage{bookmark} % for bookmarks
\usepackage{lastpage} % for getting the total number of pages
\usepackage{changepage} % for one column entries (adjustwidth environment)
\usepackage{paracol} % for two and three column entries
\usepackage{ifthen} % for conditional statements
\usepackage{needspace} % for avoiding page brake right after the section title
\usepackage{iftex} % check if engine is pdflatex, xetex or luatex

% Ensure that generate pdf is machine readable/ATS parsable:
\ifPDFTeX
    \input{glyphtounicode}
    \pdfgentounicode=1
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{lmodern}
\fi

\usepackage{charter}

% Some settings:
\raggedright
\AtBeginEnvironment{adjustwidth}{\partopsep0pt} % remove space before adjustwidth environment
\pagestyle{empty} % no header or footer
\setcounter{secnumdepth}{0} % no section numbering
\setlength{\parindent}{0pt} % no indentation
\setlength{\topskip}{0pt} % no top skip
\setlength{\columnsep}{0.15cm} % set column seperation
\pagenumbering{gobble} % no page numbering

\titleformat{\section}{\needspace{4\baselineskip}\bfseries\large}{}{0pt}{}[\vspace{1pt}\titlerule]

\titlespacing{\section}{
    % left space:
    -1pt
}{
    % top space:
    0.3 cm
}{
    % bottom space:
    0.2 cm
} % section title spacing

\renewcommand\labelitemi{$\vcenter{\hbox{\small$\bullet$}}$} % custom bullet points
\newenvironment{highlights}{
    \begin{itemize}[
        topsep=0.10 cm,
        parsep=0.10 cm,
        partopsep=0pt,
        itemsep=0pt,
        leftmargin=0 cm + 10pt
    ]
}{
    \end{itemize}
} % new environment for highlights


\newenvironment{highlightsforbulletentries}{
    \begin{itemize}[
        topsep=0.10 cm,
        parsep=0.10 cm,
        partopsep=0pt,
        itemsep=0pt,
        leftmargin=10pt
    ]
}{
    \end{itemize}
} % new environment for highlights for bullet entries

\newenvironment{onecolentry}{
    \begin{adjustwidth}{
        0 cm + 0.00001 cm
    }{
        0 cm + 0.00001 cm
    }
}{
    \end{adjustwidth}
} % new environment for one column entries

\newenvironment{twocolentry}[2][]{
    \onecolentry
    \def\secondColumn{#2}
    \setcolumnwidth{\fill, 4.5 cm}
    \begin{paracol}{2}
}{
    \switchcolumn \raggedleft \secondColumn
    \end{paracol}
    \endonecolentry
} % new environment for two column entries

\newenvironment{threecolentry}[3][]{
    \onecolentry
    \def\thirdColumn{#3}
    \setcolumnwidth{, \fill, 4.5 cm}
    \begin{paracol}{3}
    {\raggedright #2} \switchcolumn
}{
    \switchcolumn \raggedleft \thirdColumn
    \end{paracol}
    \endonecolentry
} % new environment for three column entries

\newenvironment{header}{
    \setlength{\topsep}{0pt}\par\kern\topsep\centering\linespread{1.5}
}{
    \par\kern\topsep
} % new environment for the header

\newcommand{\placelastupdatedtext}{% \placetextbox{<horizontal pos>}{<vertical pos>}{<stuff>}
  \AddToShipoutPictureFG*{% Add <stuff> to current page foreground
    \put(
        \LenToUnit{\paperwidth-2 cm-0 cm+0.05cm},
        \LenToUnit{\paperheight-1.0 cm}
    ){\vtop{{\null}\makebox[0pt][c]{
        \small\color{gray}\textit{Last updated in September 2024}\hspace{\widthof{Last updated in September 2024}}
    }}}%
  }%
}%

% save the original href command in a new command:
\let\hrefWithoutArrow\href

% new command for external links:

\begin{document}
    \newcommand{\AND}{\unskip
        \cleaders\copy\ANDbox\hskip\wd\ANDbox
        \ignorespaces
    }
    \newsavebox\ANDbox
    \sbox\ANDbox{$|$}

    \begin{header}
        \fontsize{15 pt}{15 pt}\selectfont Nicol\'as Gaffney

        \vspace{5 pt}

        \small
        \mbox{Richardson, TX}%
        \kern 5.0 pt%
        \AND%
        \kern 5.0 pt%
        \mbox{\hrefWithoutArrow{mailto:gaffney\_nic@protonmail.com}{gaffney\_nic@protonmail.com}}%
        \kern 5.0 pt%
        \AND%
        \kern 5.0 pt%
        \mbox{\hrefWithoutArrow{tel:903-426-8827}{903 426 8827}}%
        % \kern 5.0 pt%
        % \AND%
        % \kern 5.0 pt%
        % \mbox{\hrefWithoutArrow{https://yourwebsite.com/}{yourwebsite.com}}%
        \kern 5.0 pt%
        \AND%
        \kern 5.0 pt%
        \mbox{\hrefWithoutArrow{https://linkedin.com/in/n-gaffney}{linkedin.com/in/n-gaffney}}%
        \kern 5.0 pt%
        \AND%
        \kern 5.0 pt%
        \mbox{\hrefWithoutArrow{https://ngaffney.dev}{ngaffney.dev}}%
    \end{header}

    \vspace{5 pt - 0.3 cm}
    \footnotesize

    \section{Professional Summary}

        \begin{onecolentry}
Passion driven computer science junior at UT Dallas with eight years of experience in various technologies such as Linux and C.
Officer at OpenUTD, the on campus open source software club.
Experience in teaching critical thinking and problem solving skills in a programming environment.
Driven to learn and grow skills related to the computer science field while maintaining a healthy social life.
        \end{onecolentry}

    \section{Education}

        \begin{onecolentry}
            \textbf{University of Texas at Dallas}, Bachelor of Science in Computer Science\\
            \textit{Aug 2023 - May 2027}
        \end{onecolentry}

        \begin{onecolentry}
            \begin{highlights}
                \item \textbf{Coursework:} Computer Architecture, Programming Paradigms, Data Structures and Algorithmic Analysis, Compiler Design, OS Concepts
                \item \textbf{Organizations:} UTeaD Coffee and Tea Club \textit{(Membership officer)}, OpenUTD \textit{(President)}
            \end{highlights}
        \end{onecolentry}

    \section{Work Experience}

        \begin{onecolentry}
            \textbf{Code Tutor}, Code Ninjas -- Tyler, TX\\
            \textit{August 2022 - August 2024}
        \end{onecolentry}

        \begin{onecolentry}
            \begin{highlights}
            \item Teach students from the ages of seven to fifteen about coding through a JavaScript game development setting.
            \item Present STEM lessons at the public library, increasing business with tech-interested members of the community by 20\%.
            \item Manage high-stress situations effectively maintaining professionalism under pressure while resolving disputes or conflicts among students.
            \item Enhance student understanding by incorporating real-world examples and hands on activities in lessons, increasing student engagement by 50\%.
            \item Assist students in developing critical thinking skills by presenting complex challenges during sessions.
            \end{highlights}
        \end{onecolentry}

        \begin{onecolentry}
            \textbf{Code Tutor}, iCode -- Dallas, TX\\
            \textit{August 2025 - Present}
        \end{onecolentry}

        \begin{onecolentry}
            \begin{highlights}
            \item Educate dozens of students in an after school program on a wide range of STEM related subjects.
            \item Summarize lessons in reports delivered to parents, increasing the likelihood of students returning by 100\%.
            \item Give feedback to managers on lessons and how to improve the organization of educational resources.
            \item Deliver complex topics in an easy to understand manner to students who struggle with such topics, increasing knowledge retention by 70\%.
            \end{highlights}
        \end{onecolentry}

    \section{Other Work}
        \textbf{Work done for professor}
        \begin{onecolentry}
            \begin{highlights}
            \item Created curriculum and 60 second lecture and slides for globbing in regards to a Unix shell.
            \item Communicated with professor on goals and preferences for the topic involved.
            \end{highlights}
        \end{onecolentry}

    \section{Projects}

        \begin{onecolentry}
        \textbf{Physics based Particle Life Simulator} |
        \url{https://github.com/nic-gaffney/particle-sim} | \textit{On Hold}
        \\ \textit{Skills: Zig, Simulation, Graphics, Raylib, imgui, Multi-threading}
        \end{onecolentry}

        \begin{onecolentry}
            \begin{highlights}
                \item Utilized multi threading and a minimalist graphics library to simulate thousands of particles.
                \item Organized a configurable menu to adjust particles behaviors, creating small "organisms".
                \item Took advantage of Zig, an emerging technology, to prepare for the future of computer programming.
            \end{highlights}
        \end{onecolentry}


        \begin{onecolentry}
        \textbf{Linux Shell} |
        \url{https://github.com/nic-gaffney/gftsh} | \textit{Completed}
        \\ \textit{Skills: Zig, C, Forks, Signals, Linux}
        \end{onecolentry}

        \begin{onecolentry}
            \begin{highlights}
            \item Using the Zig build system, wrote a Linux shell in C with a number of features.
            \item Utilized signals to allow the shell to persist after an interrupt signal.
            \item Implemented globbing, allowing the use of wild cards in the shell.
            \end{highlights}
        \end{onecolentry}


        \begin{onecolentry}
        \textbf{Operating System} |
        \url{https://github.com/nic-gaffney/gftos} | \textit{Ongoing}
        \\ \textit{Skills: Make, C, Assembly, Cross-Compiler, Virtualization, Linker Script, Shell Scripting, Low Level Programming}
        \end{onecolentry}

        \begin{onecolentry}
            \begin{highlights}
            \item Created an operating system capable of taking keyboard input and outputting keystrokes to the framebuffer.
            \item Worked with the multiboot standard, gaining access to critical hardware information required for booting.
            \item Implemented printf for the framebuffer, allowing for easy debugging and basic programs.
            \item \textit{Currently working on multiboot 2 x86\_64 OS in a different repository, aiming to create a POSIX compliant OS.}
                \url{https://github.com/nic-gaffney/nyanix}
            \end{highlights}
        \end{onecolentry}

    \section{Skills}

        \begin{onecolentry}
            \textbf{Soft Skills:} Outgoing, Patient, Critical Thinking, Active Listening, Passionate learner
        \end{onecolentry}

        \begin{onecolentry}
            \textbf{Technical Skills:} Linux, C / C++, Python, LaTeX, Command Line, Vim, Zig, Java, Git
        \end{onecolentry}

\end{document}
