I've got a template for my CV which I grabbed from somewhere years ago, and the preamble has been mostly added to, with bits being modified along the way. I thought enough is enough so I have set about creating a document class. Now my cv.tex file has effectively no preamble, and the class file is much better structured and more readable.
Somewhere I have introduced a problem: the first line of text after a \section is indented a little, see:

See that the ‘C’ of “Computer” and the ‘G’ of “General” are indented slightly from the rest of the text.
The \section has been redefined such that it appears in the “marginal notes”, which has been forced onto the left hand side:
\renewcommand{\section}[1]{
\pagebreak[2]
\vspace{0\baselineskip}
\phantomsection
\addcontentsline{toc}{section}{#1}
\hspace{0mm}
\marginpar{
\raggedright
\scshape #1
}
}
But it is unchanged from the original preamble.
Logs
Looking at the output logs, here's two excerpts:
\blankline -> \par \vspace {2mm} \pagebreak [2]
{blank space }
{\par}
@firstpass
[] []\OT1/cmr/bx/n/10 General Computing
@\penalty via @@0 b=0 p=-10000 d=100
@@1: line 1.2 t=100 -> @@0
@secondpass
[] []\OT1/cmr/bx/n/10 General Com-put-ing
@\penalty via @@0 b=0 p=-10000 d=*
@@1: line 1.2 t=0 -> @@0
The above shows the log output for some bold text "General Computing".
\blankline -> \par \vspace {2mm} \pagebreak [2]
{blank space }
{\par}
@firstpass
[]\OT1/cmr/bx/n/10 Learning and Teaching
@\penalty via @@0 b=0 p=-10000 d=100
@@1: line 1.2 t=100 -> @@0
The above shows the log output for some bold text further down the same \section
I note that in the first example I have [] []\0T1... whereas in the second I simply have []\0T1...
Code
The document class is here in its entirety:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Optionals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareOption{10pt}{\PassOptionsToClass{10pt}{article}}
\DeclareOption{11pt}{\PassOptionsToClass{11pt}{article}}
\DeclareOption{12pt}{\PassOptionsToClass{12pt}{article}}
\ProcessOptions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Class Particulars %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Loads a “base class” which we can modify.
\LoadClass{article}
\ProcessOptions
% Class requirements and description
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{bil-CV}[2015/03/22 Ben Lavery’s CV Class]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% Required Packages %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This is a helpful package that puts math inside length specifications
% http://www.ctan.org/pkg/calc
\RequirePackage{calc}
% Good for playing with paper sizes
% http://www.ctan.org/pkg/geometry
\RequirePackage{geometry}
% For hyperlinks in text
% http://www.ctan.org/pkg/hyperref
\RequirePackage{hyperref}
% To remove headers and footers
% http://www.ctan.org/pkg/fancyhdr
\usepackage{fancyhdr}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lengths %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Half of the page width, useful for ‘false columns’
\newlength{\halfpage}
\setlength{\halfpage}{(\textwidth+\marginparwidth+\marginparsep)/2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Puts the section titles on left side of page
% Section titles are in the margin
\reversemarginpar
% Set up the margins/etc
\geometry{
paper=a4paper,
marginparwidth=20mm, % Length of section titles (marginal note width)
marginparsep=4mm, % Separation between the marginal note and main text
margin=12mm, % margins (all)
includemp, % Include marginal note in textwidth calculations
}
% Stop indenting throughout entire document
\setlength{\parindent}{0mm}
% Stop hyphens
%\hyphenpenalty=10000
%\exhyphenpenalty=10000
% Remove header and footers
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%% New Commands & Environments %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The title (name) with a horizontal rule under it
% Usage: \makeheading{name}
% Place at top of document. It should be the first thing.
\newcommand{\makeheading}[1]{
\hspace*{-\marginparsep minus \marginparwidth}
\begin{minipage}[t]{\textwidth+\marginparwidth+\marginparsep}
{\large \bfseries #1}\\
[-0.15\baselineskip]
\rule{\columnwidth}{1pt}
\end{minipage}
}
% To add some paragraph space between lines.
% This also tells LaTeX to preferably break a page on one of these gaps
% if there is a needed pagebreak nearby.
\newcommand{\blankline}{
\vspace{2mm}
\pagebreak[2]
}
% Adds a short line between ‘subsections’
\newcommand{\subsectionrule}{
\vspace{-2.5mm}\rule{300px}{0.5px}\vspace{1mm}
}
% Adds thinspace around an en-dash for dates containing months
\newcommand{\daterange}[2]{
#1\thinspace--\thinspace#2
}
% Add contact information in a ‘nice’ way
\newcommand{\contactdetails}[8]{
\begin{minipage}[t]{\halfpage}
%\twocolumn
#4\\
#5\\
#6\\
#7\\
#8
\end{minipage}
\begin{minipage}[t]{\halfpage}
\textit{Phone}: #1\\
\textit{E-mail}: \href{#2}{#2}\\
\textit{WWW}: \href{#3}{#3}
\end{minipage}
}
% Add the ‘head’ section for education/work places
\newcommand{\placementheader}[4]{
\begin{minipage}[t]{\textwidth}
\textbf{#1}, {\daterange{#2}{#3}}\\
#4
\end{minipage}
}
% Add the ‘head’ section for education/work places
\newcommand{\placementheaderonedate}[3]{
\begin{minipage}[t]{\textwidth}
\textbf{#1}, {#2}\\
#3
\end{minipage}
}
% Use a normal itemised list, but compact the space between bullets to
% ‘normal’ line spacing.
\newenvironment{compactlist}{
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
}{
\end{itemize}
}
% Use a normal itemised list, but compact the space between bullets to
% ‘normal’ line spacing. Use this INSIDE other compact lists.
\newenvironment{innercompactlist}{
\vspace{0in}
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
}{
\end{itemize}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%% Renew Commands & Environments %%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Otherwise the top of the section header will not line up with the top
% of the section.
\renewcommand{\section}[1]{
\pagebreak[2]
\vspace{0\baselineskip}
\phantomsection
\addcontentsline{toc}{section}{#1}
\hspace{0mm}
\marginpar{
\raggedright
\scshape #1
}
}
\renewcommand{\subsection}[1]{
\textbf{#1}\\
}
While the old preamble is here:
% Don't like 10pt? Try 11pt or 12pt
\documentclass[10pt]{article}
% This is a helpful package that puts math inside length specifications
\usepackage{calc}
%Provides multi-line comments
\usepackage{verbatim}
\usepackage{multicol}
% Simpler bibsection for CV sections
% (thanks to natbib for inspiration)
\makeatletter
\newlength{\bibhang}
\setlength{\bibhang}{1em}
\newlength{\bibsep}
{\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
\newenvironment{bibsection}
{\minipage[t]{\linewidth}\list{}{%
\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibsep}%
\setlength{\parsep}{\z@}%
}}
{\endlist\endminipage}
\makeatother
% Layout: Puts the section titles on left side of page
\reversemarginpar
%% Use these lines for A4-sized paper
\usepackage[paper=a4paper,
%includefoot, % Uncomment to put page number above margin
marginparwidth=20mm, % Length of section titles
marginparsep=4mm, % Space between titles and text
margin=12.04mm, % margins
includemp]{geometry}
%% More layout: Get rid of indenting throughout entire document
\setlength{\parindent}{0in}
%% This gives us fun enumeration environments. compactitem will be nice.
\usepackage{paralist}
%% Reference the last page in the page number
%
% NOTE: comment the +LP line and uncomment the -LP line to have page
% numbers without the ``of ##'' last page reference)
%
% NOTE: uncomment the \pagestyle{empty} line to get rid of all page
% numbers (make sure includefoot is commented out above)
%
\usepackage{fancyhdr,lastpage}
\pagestyle{fancy}
\pagestyle{empty} % Uncomment this to get rid of page numbers
\fancyhf{}\renewcommand{\headrulewidth}{0pt}
\fancyfootoffset{\marginparsep+\marginparwidth}
\newlength{\footpageshift}
\setlength{\footpageshift}
{0.5\textwidth+0.5\marginparsep+0.5\marginparwidth-2in}
\lfoot{\hspace{\footpageshift}%
\parbox{4in}{\, \hfill %
\arabic{page} of \protect\pageref*{LastPage} % +LP
% \arabic{page} % -LP
\hfill \,}}
% Finally, give us PDF bookmarks
\usepackage{color,hyperref}
\definecolor{darkblue}{rgb}{0.0,0.0,0.3}
\hypersetup{colorlinks,breaklinks,
linkcolor=darkblue,urlcolor=darkblue,
anchorcolor=darkblue,citecolor=darkblue}
%%%%%%%%%%%%%%%%%%%%%%%% End Document Setup %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CUSTOM STUFF
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{my_itemize}{
\begin{itemize}
\setlength{\itemsep}{0pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}}{\end{itemize}
}
\hyphenpenalty=10000 %Stop hyphens
\exhyphenpenalty=10000 %Stop hyphens
%%%%%%%%%%%%%%%%%%%%%%%%%%% Helper Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The title (name) with a horizontal rule under it
%
% Usage: \makeheading{name}
%
% Place at top of document. It should be the first thing.
\newcommand{\makeheading}[1]%
{\hspace*{-\marginparsep minus \marginparwidth}%
\begin{minipage}[t]{\textwidth+\marginparwidth+\marginparsep}%
{\large \bfseries #1}\\[-0.15\baselineskip]%
\rule{\columnwidth}{1pt}%
\end{minipage}}
% The section headings
%
% Usage: \section{section name}
%
% Follow this section IMMEDIATELY with the first line of the section
% text. Do not put whitespace in between. That is, do this:
%
% \section{My Information}
% Here is my information.
%
% and NOT this:
%
% \section{My Information}
%
% Here is my information.
%
% Otherwise the top of the section header will not line up with the top
% of the section. Of course, using a single comment character (%) on
% empty lines allows for the function of the first example with the
% readability of the second example.
\renewcommand{\section}[2]%
{\pagebreak[2]\vspace{0.5\baselineskip}%
\phantomsection\addcontentsline{toc}{section}{#1}%
\hspace{0in}%
\marginpar{
\raggedright \scshape #1}#2}
% An itemize-style list with lots of space between items
\newenvironment{outerlist}[1][\enskip\textbullet]%
{\begin{itemize}[#1]}{\end{itemize}%
\vspace{-.6\baselineskip}}
% An environment IDENTICAL to outerlist that has better pre-list spacing
% when used as the first thing in a \section
\newenvironment{lonelist}[1][\enskip\textbullet]%
{\vspace{-\baselineskip}\begin{list}{#1}{%
\setlength{\partopsep}{0pt}%
\setlength{\topsep}{0pt}}}
{\end{list}\vspace{-.6\baselineskip}}
% An itemize-style list with little space between items
\newenvironment{innerlist}[1][\enskip\textbullet]%
{\begin{compactitem}[#1]}{\end{compactitem}}
% An environment IDENTICAL to innerlist that has better pre-list spacing
% when used as the first thing in a \section
\newenvironment{loneinnerlist}[1][\enskip\textbullet]%
{\vspace{-\baselineskip}\begin{compactitem}[#1]}
{\end{compactitem}\vspace{-.6\baselineskip}}
% To add some paragraph space between lines.
% This also tells LaTeX to preferably break a page on one of these gaps
% if there is a needed pagebreak nearby.
\newcommand{\blankline}{\quad\pagebreak[2]}
% Uses hyperref to link DOI
\newcommand\doilink[1]{\href{http://dx.doi.org/#1}{#1}}
\newcommand\doi[1]{doi:\doilink{#1}}
%%%%%%%%%%%%%%%%%%%%%%%% End Helper Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%
And an excerpt from my document which has remained unchanged:
%***********************************************************************
%************************** Begin Interests ****************************
%***********************************************************************
\section{Interests}
% <- SPACES BETWEEN HEADER AND CONTENT TO KEEP CORRECT SPACING!
\subsection{General Computing}
Automation and scripting are
%s. See What is the use of percent signs (%) at the end of lines? You'll need it in certain places, otherwise it may force unwanted (spurious) spaces. – Werner Mar 25 '15 at 19:31