Add 1-page short CV variant, ORCID, profile photo, pre-commit hook

- cv-short.tex: two-column paracol layout (66/34) with curated content
  in the left column and an "at a glance" sidebar on the right.
  Locally tightens parskip, \cvsection and \cvevent so everything fits
  on a single A4 page, and redefines the sidebar list helper \sbitem
  to replace altacv's non-wrapping tikz \cvtag in the narrow column.
- chapters/short/{current,education,grants-selected,products,
  pubs-selected,sidebar}.tex: hand-curated highlight content
  (top 6 publications, top 6 grants, condensed two-line products,
  stats + recognition + leadership + research-focus sidebar blocks).
- chapters/header.tex / preamble.tex: ORCID 0000-0001-7512-8541
  via a new \orcid info field (faOrcid icon); blog field for
  giorgio.gilest.ro.
- images/gilestro.png: profile photo, used only by the short CV via
  altacv's circular \photoR.
- hooks/pre-commit + `make install-hooks`: rebuilds every variant on
  any .tex/.cls/Makefile change, aborts the commit on build failure,
  and stages refreshed PDFs into pdf/.
- Makefile: short target, hook-install target, dep glob extended to
  chapters/short/*.tex so the short build refreshes when its sources
  change.
This commit is contained in:
Giorgio Gilestro 2026-05-13 16:25:24 +01:00
parent 7e30ed5b48
commit f8563e1336
12 changed files with 239 additions and 5 deletions

View file

@ -14,12 +14,18 @@ DOCKER_RUN = docker run --rm \
-e TEXINPUTS=.:./tex-vendor: \ -e TEXINPUTS=.:./tex-vendor: \
$(DOCKER_IMAGE) $(DOCKER_IMAGE)
.PHONY: all full clean shell .PHONY: all full short clean shell install-hooks
all: full all: full short
# Activate the pre-commit hook that rebuilds every variant on commit.
# Run once after cloning, or after a fresh checkout.
install-hooks:
git config core.hooksPath hooks
@echo "Hooks path set to ./hooks -- pre-commit will rebuild all variants on .tex/.cls/Makefile changes."
# Pattern rule: build/<name>.pdf is built from <name>.tex by running xelatex twice # Pattern rule: build/<name>.pdf is built from <name>.tex by running xelatex twice
# (twice to settle cross-references / hyperref). # (twice to settle cross-references / hyperref).
$(BUILD_DIR)/%.pdf: %.tex preamble.tex $(wildcard chapters/*.tex) | $(BUILD_DIR) $(BUILD_DIR)/%.pdf: %.tex preamble.tex $(wildcard chapters/*.tex) $(wildcard chapters/short/*.tex) | $(BUILD_DIR)
$(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \ $(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \
-output-directory=$(BUILD_DIR) $< -output-directory=$(BUILD_DIR) $<
$(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \ $(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \
@ -29,6 +35,7 @@ $(BUILD_DIR):
mkdir -p $(BUILD_DIR) mkdir -p $(BUILD_DIR)
full: $(BUILD_DIR)/cv-full.pdf full: $(BUILD_DIR)/cv-full.pdf
short: $(BUILD_DIR)/cv-short.pdf
# Drop into an interactive TeX-Live shell (handy for debugging). # Drop into an interactive TeX-Live shell (handy for debugging).
shell: shell:

View file

@ -10,6 +10,7 @@
\blog{giorgio.gilest.ro} \blog{giorgio.gilest.ro}
\github{gilestrolab} \github{gilestrolab}
\github{ggilestro} \github{ggilestro}
\orcid{0000-0001-7512-8541}
\location{Department of Life Sciences, Imperial College London, UK} \location{Department of Life Sciences, Imperial College London, UK}
} }

View file

@ -0,0 +1,7 @@
% Current position + brief bio (short CV)
\cvsection{Current position}
\cvevent{Reader / Associate Professor}{Imperial College London, Department of Life Sciences}{}{}
\noindent\small
Systems neurobiologist studying the function of \textbf{sleep} and the principles of behaviour in \textit{Drosophila melanogaster}. The lab develops \textbf{open-source high-throughput instrumentation} (Ethoscopes), \textbf{computational frameworks} (Rethomics, Ethoscopy) and applies them to questions ranging from sleep homeostasis to the evolution of behaviour across species.\par

View file

@ -0,0 +1,5 @@
% Education (short CV)
\cvsection{Education}
\cvrow{2006}{\textbf{PhD in Molecular Biology}, IMP / University of Vienna, Austria}
\cvrow{2001}{\textbf{Laurea (BSc + MRes)} in Medical Biotechnology, University of Torino, Italy}

View file

@ -0,0 +1,9 @@
% Selected grants (short CV) -- top 4 by size/significance
\cvsection{Selected grants}
\cvgrant{2024}{\$200k}{Chan Zuckerberg Initiative -- Collaborative Pairs Pilot Project (PI)}
\cvgrant{2022}{£509k}{BBSRC Responsive Mode Research Grant (PI, BB/W016176/1)}
\cvgrant{2018}{£414k}{BBSRC Responsive Mode Research Grant (PI, BB/R018839/1)}
\cvgrant{2015}{£240k}{ERC Marie Skłodowska-Curie Individual Fellowship (host PI)}
\cvgrant{2014}{£375k}{BBSRC Responsive Mode Research Grant (PI, BB/M003930/1)}
\cvgrant{2009}{£270k}{Imperial College London Junior Research Fellowship}

View file

@ -0,0 +1,9 @@
% Commercial products -- condensed version for the short CV.
% Single line per product: bold name, URL, year, one-line pitch.
\cvsection{Commercial products}
\noindent\textbf{flyRoom}\ \ {\small\color{LightGrey}(\href{https://www.flyroom.net}{flyroom.net},\,2026, solo founder)} \\
\textit{``Manage your fly stocks, not spreadsheets.''}\ SaaS for \textit{Drosophila} stock management and lab collaboration.\par\smallskip
\noindent\textbf{Berengar}\ \ {\small\color{LightGrey}(\href{https://www.berengar.io}{berengar.io},\,2026, solo founder)} \\
\textit{``Just put Berengario in CC.''}\ Retrieval-augmented email assistant for team knowledge.\par

View file

@ -0,0 +1,40 @@
% Selected publications (short CV) -- senior-author high-impact only
\cvsection{Selected publications}
\cvpub
{\textbf{Gilestro GF}*}
{The Mimicry Trap -- How We Define Intelligence to Exclude Inconvenient Minds}
{philSci, 2026}
{\senior}
\cvpub
{Joyce M, Falconio AF, Blackhurst L, Prieto-Godino L, French AS, \textbf{Gilestro GF}*}
{Divergent evolution of sleep in Drosophila species}
{Nature Communications, 2024; 15:5091}
{\senior}
\cvpub
{French A, Geissmann Q, Beckwith EJ, \textbf{Gilestro GF}*}
{Sensory processing during sleep in \textit{Drosophila melanogaster}}
{Nature, 2021; 598:7882}
{\senior}
\cvpub
{Geissmann Q, Beckwith EJ, \textbf{Gilestro GF}*}
{Most sleep does not serve a vital function: evidence from \textit{Drosophila melanogaster}}
{Science Advances, 2019; 5(2):eaau9253}
{\senior}
\cvpub
{Geissmann Q, Garcia Rodriguez L, Beckwith EJ, French AS, Jamasb AR, \textbf{Gilestro GF}*}
{Ethoscopes: an open platform for high-throughput ethomics}
{PLoS Biology, 2017; 15(10):e2003026}
{\senior}
\cvpub
{\textbf{Gilestro GF}, Tononi G, Cirelli C}
{Widespread changes in synaptic markers as a function of sleep and wakefulness in \textit{Drosophila}}
{Science, 2009; 324(5923):109--12}
{}
\vspace{2pt}\noindent{\footnotesize Full publication list available on request or at \href{https://lab.gilest.ro/research/publications/}{lab.gilest.ro/research/publications}.\par}

View file

@ -0,0 +1,33 @@
% Sidebar content for the short CV (right column in paracol layout).
\cvsection{At a glance}
\cvachievement{\faTrophy}{£2.5M+}{secured as Principal Investigator}
\cvachievement{\faHandshake}{£590k+}{secured as co-Principal Investigator}
\cvachievement{\faBook}{25+}{peer-reviewed publications}
\cvachievement{\faMicrophone}{50+}{invited talks worldwide (past 7 yrs)}
\cvachievement{\faUserGraduate}{9}{trained PhDs and postdocs, now in faculty / R\&D positions}
\cvsection{Recognition}
\sbitem{Excellence in Teaching, Imperial College}
\sbitem{ERC Marie Curie IF holder}
\sbitem{Edmond J. Safra fellow}
\sbitem{Imperial Junior Research Fellow}
\sbitem{Senior / corresponding author in \textit{Science}, \textit{Nature}, \textit{Nat.\,Comm.}, \textit{Sci.\,Advances}, \textit{PLoS Biology}}
\cvsection{Leadership \& service}
\sbitem{UK rep, European \textit{Drosophila} Board}
\sbitem{Vice-Chair, EU MCSE \& HADEA}
\sbitem{Co-founder, JEDI Network}
\sbitem{Director, MSc ABB (2017--2024)}
\sbitem{Academic Editor, PLoS~ONE (2011--2022)}
\sbitem{Reviewer for 35+ academic journals}
\cvsection{Research focus}
\sbitem{\textit{Drosophila} sleep \& behaviour}
\sbitem{High-throughput ethomics}
\sbitem{Open-source neuroscience instrumentation}
\sbitem{Systems neurobiology}

78
cv-short.tex Normal file
View file

@ -0,0 +1,78 @@
% ============================================================
% cv-short.tex -- 1-2 page highlight CV
% Two-column layout via paracol: main content left, "at a glance"
% + recognition tags in the right sidebar.
% Build with: make short
% ============================================================
\documentclass[10pt,a4paper,ragged2e,withhyper]{altacv}
\input{preamble.tex}
\usepackage{paracol}
% Narrow page margins for a denser look.
\geometry{left=1.2cm,right=1.2cm,top=1.2cm,bottom=1.2cm,columnsep=0.9cm}
% Sidebar visual: light grey background colour for the right column.
\definecolor{SidebarBG}{HTML}{F4F4F4}
% Tighter section spacing for the short variant.
\renewcommand{\cvsectionfont}{\Large\bfseries}
\renewcommand{\cvsubsectionfont}{\normalsize\bfseries}
\setlength{\parskip}{1pt}
% Compress \cvsection: less top whitespace, thinner rule.
\renewcommand{\cvsection}[2][]{%
\nointerlineskip\medskip%
{\color{heading}\cvsectionfont\MakeUppercase{#2}}\\[-0.6ex]%
{\color{headingrule}\rule{\linewidth}{1.4pt}\par}\smallskip
}
% Compress \cvevent: drop trailing \medskip.
\makeatletter
\renewcommand{\cvevent}[4]{%
{\large\color{emphasis}#1\par}
\smallskip\normalsize
\ifstrequal{#2}{}{}{\textbf{\color{accent}#2}\par\smallskip}%
\ifstrequal{#3}{}{}{%
{\small\makebox[0.5\linewidth][l]{\cvDateMarker~#3}}}%
\ifstrequal{#4}{}{}{%
{\small\makebox[0.5\linewidth][l]{\cvLocationMarker~#4}}}\par
\smallskip\normalsize
}
\makeatother
% Compact one-item-per-line list for the sidebar (replaces \cvtag pills,
% which can't wrap inside the narrow column).
\newcommand{\sbitem}[1]{%
\par\noindent\textcolor{accent}{\small\faAngleRight}~\small #1\par%
}
\begin{document}
% Photo (short CV only). altacv default: circular crop, no \normalphoto opt.
\photoR{2.2cm}{images/gilestro}
% Full-width header at the top
\input{chapters/header.tex}
% Two columns: main (left, 66%) / sidebar (right, 34%)
\columnratio{0.66}
\setlength{\columnsep}{2em}
\setlength{\columnseprule}{0pt}
\begin{paracol}{2}
% =============== MAIN COLUMN (left) ===========================
\input{chapters/short/current.tex}
\input{chapters/short/education.tex}
\input{chapters/short/grants-selected.tex}
\input{chapters/short/products.tex}
\input{chapters/short/pubs-selected.tex}
\switchcolumn
% =============== SIDEBAR (right) ==============================
\input{chapters/short/sidebar.tex}
\end{paracol}
\end{document}

43
hooks/pre-commit Executable file
View file

@ -0,0 +1,43 @@
#!/usr/bin/env bash
# Pre-commit hook: rebuild every CV variant whenever LaTeX sources change.
#
# Activated via: git config core.hooksPath hooks
# (or run once: make install-hooks)
#
# Behaviour:
# - Only fires when staged changes touch .tex sources, the Makefile,
# or the vendored .cls. Other commits skip the rebuild.
# - Runs `make all` (i.e. cv-full + cv-short).
# - Aborts the commit if the build fails.
# - Copies the rebuilt PDFs to ./pdf/ (tracked) and stages them so each
# commit ships with up-to-date PDFs alongside the source.
set -euo pipefail
# Skip if no staged file matches a "build input" pattern.
STAGED=$(git diff --cached --name-only --diff-filter=ACMR || true)
if ! echo "$STAGED" | grep -qE '\.(tex|cls)$|^Makefile$'; then
exit 0
fi
echo "[pre-commit] LaTeX source changed -- rebuilding all CV variants..."
# Build everything. `make all` covers full + short.
if ! make all >/tmp/cv-build.log 2>&1; then
echo "[pre-commit] BUILD FAILED -- commit aborted." >&2
echo "[pre-commit] See /tmp/cv-build.log for details." >&2
tail -30 /tmp/cv-build.log >&2
exit 1
fi
# Publish the rebuilt PDFs to the tracked ./pdf/ directory and stage them.
mkdir -p pdf
for variant in cv-full cv-short; do
if [[ -f "build/${variant}.pdf" ]]; then
cp "build/${variant}.pdf" "pdf/${variant}.pdf"
git add "pdf/${variant}.pdf"
fi
done
echo "[pre-commit] Rebuild OK, pdf/ updated and staged."
exit 0

BIN
images/gilestro.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View file

@ -39,7 +39,9 @@
% --- Extra info fields for the header ------------------------ % --- Extra info fields for the header ------------------------
% \blog{host} → faBlog icon + linked https://host % \blog{host} → faBlog icon + linked https://host
% \orcid{id} → faOrcid icon + linked https://orcid.org/<id>
\NewInfoField{blog}{\faBlog}[https://] \NewInfoField{blog}{\faBlog}[https://]
\NewInfoField{orcid}{\faOrcid}[https://orcid.org/]
% --- Hyperref tweaks (the class loads it via withhyper) ------ % --- Hyperref tweaks (the class loads it via withhyper) ------
\hypersetup{ \hypersetup{