Compare commits

...

24 Commits

Author SHA1 Message Date
782919356b Merge pull request 'feature/update-cv' (#3) from feature/update-cv into main
Reviewed-on: #3
2026-03-17 22:11:11 +01:00
Pedro Cabral
9a3654f810 pdf build after changes 2026-03-14 16:15:32 +01:00
Pedro Cabral
d930d7f685 improved about me section 2026-03-14 16:15:07 +01:00
Pedro Cabral
adf7b4c275 shortened skill name
Development Tools & Package Managers
2026-03-14 16:14:33 +01:00
Pedro Cabral
adcd386bf8 added lines spacing 2026-03-14 16:13:06 +01:00
Pedro Cabral
3cc39f12f4 built pdf file 2026-03-13 23:44:22 +01:00
Pedro Cabral
80c8ee1961 added spacing between paragraphs in section "about me" 2026-03-13 23:23:34 +01:00
Pedro Cabral
bc57fbf58b added section "about me" 2026-03-13 22:29:18 +01:00
Pedro Cabral
02b1c7bbf5 minor changes in skills 2026-03-13 22:13:42 +01:00
Pedro Cabral
c9d7332fc8 do not hyphenize word "interpersonal" 2026-03-13 22:11:52 +01:00
Pedro Cabral
b3482178e7 removed https from homepage 2026-03-13 22:11:04 +01:00
b30b348ce4 Merge pull request 'feature/round-profile-picture' (#2) from feature/round-profile-picture into feature/update-cv
Reviewed-on: #2
2026-02-25 10:32:26 +01:00
Pedro Cabral
753ac09b04 centered profile picture 2026-02-24 10:26:37 +01:00
Pedro Cabral
4e97205c67 circular profile picture 2026-02-24 09:32:37 +01:00
Pedro Cabral
84cb871785 build moderncv 2026-02-21 00:42:05 +01:00
Pedro Cabral
c04b37aedd updated skills 2026-02-21 00:38:24 +01:00
Pedro Cabral
b3f68dd240 updated experiences 2026-02-21 00:38:24 +01:00
Pedro Cabral
f5edda4fe2 putting Profile and Languages side-by-side 2026-02-21 00:38:09 +01:00
Pedro Cabral
8b3ba57a7d profile picture size set to 3.5cm 2026-02-21 00:28:31 +01:00
Pedro Cabral
65fb952d6a updated e-mail address 2026-02-21 00:27:46 +01:00
0b21d4d1b7 Merge pull request 'feature/intelligent-build' (#1) from feature/intelligent-build into main
Reviewed-on: #1
2026-02-21 00:20:08 +01:00
Pedro Cabral
2de6dccfa8 added tasks to execute manually 2026-02-21 00:16:06 +01:00
Pedro Cabral
c3cbc61406 added smart build 2026-02-21 00:15:52 +01:00
Pedro Cabral
0df5a0a64c ignoring .DS_Store 2026-02-21 00:15:32 +01:00
8 changed files with 169 additions and 21 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.DS_Store

19
.vscode/settings.json vendored
View File

@@ -1,3 +1,20 @@
{
"latex-workshop.latex.recipe.default": "latexmk (xelatex)"
"latex-workshop.latex.recipes": [
{
"name": "Smart LaTeX Build",
"tools": ["smart-build"]
}
],
"latex-workshop.latex.tools": [
{
"name": "smart-build",
"command": "bash",
"args": [
"%WORKSPACE_FOLDER%/build/build-latex-smart.sh",
"%DOC%"
]
}
],
"latex-workshop.latex.recipe.default": "Smart LaTeX Build",
"latex-workshop.formatting.latex": "latexindent"
}

34
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,34 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Current File (XeLaTeX)",
"type": "shell",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"${file}"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
},
{
"label": "Build Current File (pdfLaTeX)",
"type": "shell",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"${file}"
],
"group": "build",
"problemMatcher": []
}
]
}

35
build/build-latex-smart.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
set -euo pipefail
# Color definitions
BOLD='\033[1m'
RED='\033[31m'
BLUE='\033[34m'
RESET='\033[0m'
# Ensure a file parameter is passed
if [[ $# -lt 1 ]]; then
echo -e "${BOLD}${RED}Error${RESET}${RED}: No .tex file provided.${RESET}"
echo "Usage: $0 <file.tex>"
exit 1
fi
FILE="$1"
# append .tex file extension, iff not already passed
[[ "$FILE" != *.tex ]] && FILE="${FILE}.tex"
# Check that the file exists
if [[ ! -f "$FILE" ]]; then
echo -e "${BOLD}${RED}Error${RESET}${RED}: File '$FILE' not found.${RESET}"
exit 1
fi
# Detect active \usepackage{fontspec} (ignore commented lines)
if grep -Eq '^[^%]*\\usepackage\{fontspec\}' "$FILE"; then
echo -e "${BLUE}Detected fontspec → Using XeLaTeX${RESET}"
xelatex -synctex=1 -interaction=nonstopmode -file-line-error "$FILE"
else
echo -e "${BLUE}No active fontspec → Using pdfLaTeX${RESET}"
pdflatex -synctex=1 -interaction=nonstopmode -file-line-error "$FILE"
fi

1
moderncv/.gitignore vendored
View File

@@ -4,3 +4,4 @@
!.gitignore
!*.tex
!*.pdf
!*.cls

View File

@@ -1,5 +1,5 @@
\documentclass[11pt,a4paper,sans]{moderncv}
\documentclass[11pt,a4paper,sans]{pedro-moderncv}
\moderncvstyle{classic} % Style options: 'casual', 'classic', 'oldstyle', 'banking'
\moderncvcolor{blue} % Color options: 'blue', 'orange', 'green', 'red', 'purple', 'grey', 'black'
@@ -10,33 +10,43 @@
\title{Curriculum Vitae}
\address{Rittmeisterkoppel 14C}{22359 Hamburg}{Germany}
\phone[mobile]{+49-(0)-17657-909188}
\email{pmpcabral@gmail.com}
\homepage{https://git.sueo.de/pcabral}
\email{pmpcabral@posteo.de}
\homepage{git.sueo.de/pcabral}
\social[]{} % Optional: GitHub, LinkedIn, etc.
\photo{../me_m_8x8_4x.jpg}
\photo[3.5cm][0pt]{../me_m_8x8_4x.jpg}
\hyphenation{interpersonal}
\linespread{1.05}
\begin{document}
\makecvtitle
\begin{minipage}[t]{0.48\textwidth}
\section{Profile}
\cvitem{Date of Birth}{January 17\textsuperscript{th}, 1988}
\cvitem{Place of Birth}{Setúbal, Portugal}
\cvitem{Nationality}{Portuguese}
\end{minipage}\hfill
\begin{minipage}[t]{0.48\textwidth}
\section{Languages}
\cvitemwithcomment{Portuguese}{First Language}{}
\cvitemwithcomment{German}{Fluent}{}
\cvitemwithcomment{English}{Fluent}{}
\cvitemwithcomment{Spanish}{Good}{}
\cvitemwithcomment{French}{Basic}{}
\end{minipage}\hfill
\section{Experience}
\cventry{Feb 2017 -- Present}{Software Developer}{HR4YOU AG}{Großefehn, Germany}{}{
PHP, JavaScript, SQL.
\cventry{Jun 2021 -- Jan 2025}{Software Developer}{For Sale Digital Internet-Agentur GmbH}{Hamburg, Germany}{}{
PHP (\textit{native, Laravel, WordPress}), JavaScript (\textit{Vanilla, jQuery}), MySQL, Google Cloud Platform, TypeScript, React, Jenkins, ShipIt, Docker, Shopify.
}
\cventry{Feb 2017 -- May 2021}{Software Developer}{HR4YOU AG}{Großefehn, Germany}{}{
PHP, JavaScript (\textit{Vanilla, jQuery}), MySQL, CSS, LESS.
}
\cventry{Sep 2014 -- Apr 2016}{Support \& Operations}{SAFIRA/KPMG}{Carnaxide, Portugal}{}{
IBM Business Process Management, Forefront Identity Manager (FIM).
IBM Business Process Management, Forefront Identity Manager (\textit{FIM}).
}
\cventry{Apr 2013 -- Sep 2014}{Software Developer}{SAFIRA}{Carnaxide, Portugal}{}{
IBM BPM, IBM WebSphere Message Broker, SQL.
@@ -46,6 +56,24 @@
\cventry{2013}{Bachelor of Science}{Faculdade de Ciências e Tecnologia, Universidade Nova de Lisboa}{Caparica, Portugal}{}{}
\section{Skills}
\cvitem{Languages \& Tools}{PHP, OOP, JavaScript, jQuery, CSS, SQL, SOAP, REST, PL/SQL, XML}
\cvitem{Languages}{PHP, JavaScript (\textit{Vanilla}), TypeScript, MySQL, CSS, SCSS, HTML}
\cvitem{Frameworks \& Libraries}{Laravel, React, jQuery, Bootstrap}
\cvitem{Content Management Systems}{WordPress, Shopify}
\cvitem{Development Tools}{PHPStorm, Visual Studio Code, Git, Composer, npm, Vite}
\cvitem{DevOps \& Automation Tools}{Jenkins, ShipIt, Docker, Kubernetes, Google Cloud Platform}
\cvitem{Software Development Practices}{Test-Driven Development (TDD), Object-Oriented Programming (OOP), Mobile-First Design}
\cvitem{Soft Skills}{Effective team player, collaborator, and mentor; strong communication and interpersonal skills; experienced moderator}
\section{About me}
I believe there are no stupid questions --- only opportunities to learn, improve, and build better things together.
\bigskip % bigger gap before Personal section
When I'm not coding, you'll usually find me taking care of and entertaining my two lovely kids.
\medskip % slightly smaller gap within Personal block
I also love singing, acting, playing the didgeridoo, and chopping wood. I regularly take cold showers (or ice baths when temperatures drop below zero) in the morning.
\end{document}

View File

@@ -0,0 +1,32 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{pedro-moderncv}[2026/02/24 Custom moderncv wrapper]
\LoadClassWithOptions{moderncv}
\RequirePackage{tikz}
\RequirePackage{etoolbox}
\AtBeginDocument{%
\makeatletter
% Safe scaled length
\newlength{\@photowidthscaled}
\patchcmd{\makecvhead}
{\includegraphics[width=\@photowidth]{\@photo}}
{%
% Copy original width
\setlength{\@photowidthscaled}{\@photowidth}
% Scale safely (no calc/dimexpr/TikZ parser issues)
\setlength{\@photowidthscaled}{1.2\@photowidthscaled}
\begin{tikzpicture}
\clip (0, 0) circle (\@photowidth/2);
\node at (-0.2cm, -0.3cm) {
\includegraphics[width=\@photowidthscaled]{\@photo}
};
\end{tikzpicture}
}
{}{}
\makeatother
}