diff --git a/Makefile b/Makefile index 6090fa2..92fc69c 100644 --- a/Makefile +++ b/Makefile @@ -14,12 +14,18 @@ DOCKER_RUN = docker run --rm \ -e TEXINPUTS=.:./tex-vendor: \ $(DOCKER_IMAGE) -.PHONY: all full clean shell -all: full +.PHONY: all full short clean shell install-hooks +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/.pdf is built from .tex by running xelatex twice # (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 \ -output-directory=$(BUILD_DIR) $< $(DOCKER_RUN) $(ENGINE) -interaction=nonstopmode -halt-on-error \ @@ -28,7 +34,8 @@ $(BUILD_DIR)/%.pdf: %.tex preamble.tex $(wildcard chapters/*.tex) | $(BUILD_DIR) $(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). shell: diff --git a/chapters/header.tex b/chapters/header.tex index be14b08..a2987f2 100644 --- a/chapters/header.tex +++ b/chapters/header.tex @@ -10,6 +10,7 @@ \blog{giorgio.gilest.ro} \github{gilestrolab} \github{ggilestro} + \orcid{0000-0001-7512-8541} \location{Department of Life Sciences, Imperial College London, UK} } diff --git a/chapters/short/current.tex b/chapters/short/current.tex new file mode 100644 index 0000000..33f05e9 --- /dev/null +++ b/chapters/short/current.tex @@ -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 diff --git a/chapters/short/education.tex b/chapters/short/education.tex new file mode 100644 index 0000000..9a11239 --- /dev/null +++ b/chapters/short/education.tex @@ -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} diff --git a/chapters/short/grants-selected.tex b/chapters/short/grants-selected.tex new file mode 100644 index 0000000..404df93 --- /dev/null +++ b/chapters/short/grants-selected.tex @@ -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} diff --git a/chapters/short/products.tex b/chapters/short/products.tex new file mode 100644 index 0000000..fdfd0b0 --- /dev/null +++ b/chapters/short/products.tex @@ -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 diff --git a/chapters/short/pubs-selected.tex b/chapters/short/pubs-selected.tex new file mode 100644 index 0000000..9a6d01b --- /dev/null +++ b/chapters/short/pubs-selected.tex @@ -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} diff --git a/chapters/short/sidebar.tex b/chapters/short/sidebar.tex new file mode 100644 index 0000000..3047890 --- /dev/null +++ b/chapters/short/sidebar.tex @@ -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} diff --git a/cv-short.tex b/cv-short.tex new file mode 100644 index 0000000..a80c408 --- /dev/null +++ b/cv-short.tex @@ -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} diff --git a/hooks/pre-commit b/hooks/pre-commit new file mode 100755 index 0000000..5d2b722 --- /dev/null +++ b/hooks/pre-commit @@ -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 diff --git a/images/gilestro.png b/images/gilestro.png new file mode 100644 index 0000000..d0e14ba Binary files /dev/null and b/images/gilestro.png differ diff --git a/preamble.tex b/preamble.tex index 5d80133..e13b707 100644 --- a/preamble.tex +++ b/preamble.tex @@ -38,8 +38,10 @@ \setlength{\parskip}{2pt} % --- 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/ \NewInfoField{blog}{\faBlog}[https://] +\NewInfoField{orcid}{\faOrcid}[https://orcid.org/] % --- Hyperref tweaks (the class loads it via withhyper) ------ \hypersetup{