commit 48d200588888fb1394c60fdb6431f88367f91928 Author: Samuel Ortion Date: Mon Jun 13 11:32:40 2022 +0200 Add initial cv diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d17dae --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.venv diff --git a/img/portrait.JPG b/img/portrait.JPG new file mode 100755 index 0000000..77f1e93 Binary files /dev/null and b/img/portrait.JPG differ diff --git a/img/programming_languages.png b/img/programming_languages.png new file mode 100644 index 0000000..fc072cf Binary files /dev/null and b/img/programming_languages.png differ diff --git a/img/user-o.png b/img/user-o.png new file mode 100644 index 0000000..e279b32 Binary files /dev/null and b/img/user-o.png differ diff --git a/src/generate_programming_language_wodle.py b/src/generate_programming_language_wodle.py new file mode 100644 index 0000000..10b3871 --- /dev/null +++ b/src/generate_programming_language_wodle.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 + +from wordcloud import WordCloud +import matplotlib.pyplot as plt + +LANGUAGES = ["C", "C++", "Java", "JavaScript", "Python", "OCaml", "HTML", "CSS", "PHP"] + +wordcloud = WordCloud(width=800, height=400, background_color='white').generate_from_frequencies( + {lang: 1 for lang in LANGUAGES}) + +plt.figure(figsize=(10, 8), facecolor=None) +plt.imshow(wordcloud) +# plt.title("Programming Languages") +plt.axis("off") +# plt.show() +plt.savefig("programming_languages.png") +plt.close() + + diff --git a/tex/.gitignore b/tex/.gitignore new file mode 100644 index 0000000..2fd29da --- /dev/null +++ b/tex/.gitignore @@ -0,0 +1,10 @@ +*.log +*.aux +*.bbl +*.blg +*.out +*~ +*.pdf +_minted-main +_minted-preamble +*.synctex.gz \ No newline at end of file diff --git a/tex/Makefile b/tex/Makefile new file mode 100644 index 0000000..6378864 --- /dev/null +++ b/tex/Makefile @@ -0,0 +1,11 @@ +filename=main + +all: build + +build: + pdflatex -shell-escape ${filename}.tex + +clean: + rm -f *.log *.aux *.bbl *.blg *.out *~ $(filename).pdf + rm -rf _minted-main _minted-preamble $(filename).synctex.gz + diff --git a/tex/main.tex b/tex/main.tex new file mode 100644 index 0000000..29177b7 --- /dev/null +++ b/tex/main.tex @@ -0,0 +1,200 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% MyOwnCV) +% +% Authors: +% Samuel ORTION +% +% © 2022 +% All right reserved. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[11pt]{mycv} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} + +\usepackage{datenumber} +\usepackage{fp} + + +\begin{document} +\newcounter{dateone}% +\newcounter{datetwo}% + +\setmydatenumber{dateone}{2003}{01}{21}% +\setmydatenumber{datetwo}{\the\year}{\the\month}{\the\day}% +\FPsub\result{\thedatetwo}{\thedateone} +\FPdiv\myage{\result}{365.2425} +\myage +\FPround\myage{\myage}{0} + %---------------------------------------------------------------------------------------- + % TOP BAR + %---------------------------------------------------------------------------------------- + \begin{TopBar}{\ColorTextSide} + \Name{\ColorHighlight}{Samuel ORTION}{Student}{\myage\ years old} + + %%% Contact + \TextSeparator{\ColorHighlight}{Contact} + \begin{DoubleColumns} + \begin{ItemList}{\ColorHighlight} + \item [\Large\faAt] \href{mailto:samuel@ortion.fr}{samuel@ortion.fr} + \item [\Large\faMobile] 06 21 58 03 48 + \item [\Large\faMapMarker] France + \end{ItemList} + \nextcolumn + \begin{ItemList}{\ColorHighlight} + \item [\Large\faGit] \href{https://framagit.org/UncleSamulus}{UncleSamulus} + % \item [\Large\faLinkedinSquare] \href{https://www.linkedin.com/}{linkedin} + \end{ItemList} + \end{DoubleColumns} + + %%% Interests + \TextSeparator{\ColorHighlight}{Interests} + \begin{TripleColumns} + \begin{ItemList}{\ColorHighlight} + \item [] Ornithology + \end{ItemList} + \nextcolumn + \begin{ItemList}{\ColorHighlight} + \item [] Biology + \end{ItemList} + \nextcolumn + \begin{ItemList}{\ColorHighlight} + \item [] Computer Science + \end{ItemList} + \end{TripleColumns} + \end{TopBar} + + + + %---------------------------------------------------------------------------------------- + % SIDE BAR + %---------------------------------------------------------------------------------------- + \begin{SideBar}{\ColorBackground}{\ColorTextSide} + + %%% Soft skills + \TextSeparatorBis{\ColorHighlight}{\faUser}{Soft skills} + + \Label{\ColorHighlight}{Skill 1} + \Label{\ColorHighlight}{Skill 2} + \Label{\ColorHighlight}{Skill 3} + \Label{\ColorHighlight}{Skill 4} + \Label{\ColorHighlight}{Skill 5} + + \vspace*{1cm} + + %%% Hard skills + \TextSeparatorBis{\ColorHighlight}{\faGears}{Hard skills} + \begin{ItemList}{\ColorHighlight} + \item [\faCode] C/C++, Python, JS, Java, OCaml + \item [\faFileCodeO] HTML, CSS, \LaTeX +% \item [\faCubes] +% \item [\faPencilSquareO] skill, skill, skill, skill + \item [\faVideoCamera] Photography, Video editing +% \item [\faGear] + \end{ItemList} + + \vspace*{1cm} + + + %%% Languages + \TextSeparatorBis{\ColorHighlight}{\faLanguage}{Languages} + + \begin{SkillGauges}{\ColorHighlight} + \addGauge{French}{5} + \addGauge{English}{4} + \addGauge{Deutsch}{2} + \end{SkillGauges} + \end{SideBar} + + %---------------------------------------------------------------------------------------- + % Picture + %---------------------------------------------------------------------------------------- + \DefineProfile{\ColorOther}{\ColorTextSide}{../img/portrait.JPG} + + %---------------------------------------------------------------------------------------- + % Main + %---------------------------------------------------------------------------------------- + \begin{MainPart} + + %%% Education + \MainTitleBis{\ColorHighlight}{\ColorTextMain}{Education}{\faGraduationCap} + +% \Experience +% {\ColorHighlight} +% {Master of Bioinformatics} +% {Université d'Évry val d'Essonne -- Paris-Saclay} +% {2023} +% { +% Write here your description.\\ +% +% +% } + + \Experience + {\ColorHighlight} + {Licence Double Sciences de la Vie - Informatique} + {Université d'Évry val d'Essonne -- Paris-Saclay} + {2020-\faUndo} + { + I will have my bachelor degree of both computer science and biology in 2023. I am currently in third year of this double cursus. + } + \Experience + {\ColorHighlight} + {Baccalauréat Scientifique, option Sciences de la Vie et de la Terre, mention Européenne} + {Lycée Notre-Dame, Le Mans} + {2017-2020} + { + I have got my scientific baccalaureate with "Very Good" mention, in 2020. I had the DNL euro option (I had some courses of biology in english). + } + + %%% Activities + \MainTitleBis{\ColorHighlight}{\ColorTextMain}{Activities}{\faUsers} + \vspace*{0.5cm} + \begin{DoubleColumns} + \begin{ItemList}{\ColorHighlight} + \item [] Bird Watching + \item [] Bat Recording + \end{ItemList} + \nextcolumn + \begin{ItemList}{\ColorHighlight} + \item [] Taking Photographs + \item [] Development \& SysAdmin + \end{ItemList} + \end{DoubleColumns} + %%% Experiences + \MainTitleBis{\ColorHighlight}{\ColorTextMain}{Experiences}{\faSuitcase} + \Experience + {\ColorHighlight} + {Computer Science Intern} + {\href{https://natural-solutions.eu/}{Natural-Solutions}} + {2022} + { + I did an internship during my second year of bachelor degree in the web agency Natural Solutions, during witch I documented and tested an IA that classify nocturnal bird sounds (flight call especially). + } +% \Experience +% {\ColorHighlight} +% {Teacher} +% {Nice School} +% {2004-2015} +% { +% Write here your description.\\ +% +% } +% \Experience +% {\ColorHighlight} +% {Happiness manager} +% {Nowhere} +% {1968} +% { +% Write here your description.\\ +% +% } + \begin{figure}[hbpt!] + \includegraphics[scale=0.4]{../img/programming_languages.png} + \end{figure} + \end{MainPart} + + + +\end{document} \ No newline at end of file diff --git a/tex/mycv.cls b/tex/mycv.cls new file mode 100644 index 0000000..27e0b0e --- /dev/null +++ b/tex/mycv.cls @@ -0,0 +1,389 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% MyCV +% LaTeX Class +% Version 1.0 (13/06/22) +% +% Authors: +% Samuel ORTION +% Inspired by spidercv (ROMAINPC) +% +% License: +% The MIT License (see included LICENSE file) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{mycv}[03/01/2022] + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}} % Pass through any options to the base class +\ProcessOptions\relax % Process given options + +\LoadClass{extarticle} % Load the base class + +%---------------------------------------------------------------------------------------- +% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS +%---------------------------------------------------------------------------------------- + +\setlength{\parindent}{0mm} % Suppress paragraph indentation +\usepackage[hidelinks]{hyperref} % Required for links but hide the default boxes around links +\usepackage{lipsum} +\pagestyle{empty} % No headers or footers +\usepackage{moresize} % Provides more font size commands (\HUGE and \ssmall) +\usepackage{fontawesome} % fontawesome +\usepackage{ifthen} + + +%---------------------------------------------------------------------------------------- +% COLORS +%---------------------------------------------------------------------------------------- +\usepackage[dvipsnames]{xcolor} + +\definecolor{Black}{HTML}{212121} +\definecolor{White}{HTML}{FFFFFF} +\definecolor{GreenArmy}{HTML}{252e25} +\definecolor{GreenIT}{HTML}{4caf50} + +%%%%% color macros, use it at the beginning of your cv to quickly use the enterprise colors (Pro HRD tips) +\newcommand{\DefineColorMacros}[5]{% COLORS : TextSide / TextMain / HighLight / Background /Other + \def\ColorTextSide{#1} + \def\ColorTextMain{#2} + \def\ColorHighlight{#3} + \def\ColorBackground{#4} + \def\ColorOther{#5} + \color{\ColorTextMain} % Default text color +} + +\DefineColorMacros{White}{Black}{GreenIT}{Black}{GreenArmy} + + + +%---------------------------------------------------------------------------------------- +% FONTS +%---------------------------------------------------------------------------------------- + +\usepackage[utf8]{inputenc} % Required for inputting international characters +\usepackage[T1]{fontenc} % Output font encoding for international characters + +% \usepackage{roboto} +\usepackage[scaled]{helvet} + + +\renewcommand*\familydefault{\sfdefault} % Force the sans-serif version of any font used + + + +%---------------------------------------------------------------------------------------- +% GEOMETRIE +%---------------------------------------------------------------------------------------- +\usepackage{calc} +\usepackage{tikz} +\usetikzlibrary{calc,positioning,backgrounds,matrix} + +\newlength\margin +\setlength\margin{0.5cm} +\usepackage[margin=\margin,noheadfoot,a4paper]{geometry} +\newlength\sidewidth +\setlength\sidewidth{0.33333\paperwidth-2\margin} +\newlength\mainwidth +\setlength\mainwidth{\paperwidth-4\margin-\sidewidth} +\newlength\anglesize +\setlength\anglesize{0.7cm} +\newlength\topheight +\setlength\topheight{\sidewidth} +\newlength\profilesize +\setlength\profilesize{0.7\topheight} + + + + +%---------------------------------------------------------------------------------------- +% MAIN SECTIONS +%---------------------------------------------------------------------------------------- + +\usepackage{ragged2e} +\usepackage[absolute,overlay]{textpos} % option needed to use absolute positionning and to have text on front + +\newenvironment{SideBar}[2]{% Background color, Text color + \begin{tikzpicture}[remember picture,overlay]% put text anywhere + \fill[fill=#1, shift={(current page.north west)}] % side and top background + (0,-\paperheight) -- + (0,-\anglesize) -- + (\anglesize,0) -- + (\paperwidth,0) -- + (\paperwidth,-\topheight-2\margin) -- + (\sidewidth+2\margin+\anglesize,-\topheight-2\margin) -- + (\sidewidth+2\margin,-\topheight-2\margin-\anglesize) -- + (\sidewidth+2\margin,-\paperheight) -- + cycle; + \draw [draw=#1, shift={(current page.north west)}, very thick] + (\paperwidth-0.5\margin,-\topheight-3\margin) -- + (\paperwidth-0.5\margin,-\paperheight+0.5\margin+0.5\anglesize) -- + (\paperwidth-0.5\margin-0.5\anglesize,-\paperheight+0.5\margin) -- + (\sidewidth+3\margin,-\paperheight+0.5\margin); + \end{tikzpicture}% + %%%%%%%%%%%%% + % \TPmargin{}{} + \begin{textblock*}{\sidewidth}(\margin,\topheight + 3\margin -0.4cm) + \begin{center} + \color{#2} + % Please use vspace to verticaly align manually your content +}{ + \end{center} + \end{textblock*} +} + + +\newenvironment{TopBar}[1]{ % Text color + \begin{textblock*}{\mainwidth}(\sidewidth+3\margin,\margin-0.4cm) + \begin{center} + \color{#1} +}{ + \end{center} + \end{textblock*} +} + + +\newenvironment{MainPart}{ + \begin{textblock*}{\mainwidth}(\sidewidth+3\margin,\topheight + 3\margin-0.4cm) + \begin{center} +}{ + \end{center} + \end{textblock*} +} + + +\usetikzlibrary{shapes,decorations} + +%%%%%%% Picture +\newcommand{\DefineProfile}[3]% Background color, Highlight color, Img path +{ + \begin{tikzpicture}[remember picture,overlay] + \node [rectangle, draw=#2, rounded corners=0.5mm, very thick, + shift={(current page.north west)}, xshift=\anglesize, yshift=-\anglesize, + ](s1){}; + \node [rectangle, draw=#2, rounded corners=0.5mm, very thick, + shift={(current page.north west)}, xshift=(\sidewidth+2\margin), yshift=-(\sidewidth+2\margin), + ](s2){}; + \draw [draw=#2, very thick] + (s1) -- (s2); + %%%%%%%%%%%%%%% + \node[ + shift={(current page.north west)}, + xshift=(\sidewidth+2\margin)/2, + yshift=-(\sidewidth+2\margin)/2, + chamfered rectangle, draw=#2, very thick, + minimum size=\profilesize, + fill=#1, + path picture={ + \node at (path picture bounding box.center){ + \includegraphics[height=\profilesize]{#3} + }; + }] + {}; + \end{tikzpicture} +} + + + +%---------------------------------------------------------------------------------------- +% COMMANDS AND ENVIRONMENTS +%---------------------------------------------------------------------------------------- + +%%%%%%% Top bar + +%%% Name +\newcommand{\Name}[4]% Highlight color, Name, Profession, Age +{ + {\HUGE{\textbf{\color{#1}#2}}\\ + \Large{#3} + \hfill + \Large{#4}} +} + +%%%%%%%%% Side bar + +%%% Spider chart +\usepackage{xparse} +\newcounter{spidercount} +\ExplSyntaxOn +\NewDocumentCommand{\newList}{m} + { + \seq_new:c { l_kees_list_#1_seq } + } +\NewDocumentCommand{\addToList}{mm} + { + \seq_put_right:cn { l_kees_list_#1_seq } { #2 } + } +\NewDocumentCommand{\getFromList}{mm} + { + \seq_item:cn { l_kees_list_#1_seq } { #2 } + } +\ExplSyntaxOff +\newList{skilllist} +\newList{masterlist} + +\newcommand{\addSkill}[2]{ % Skill label, Strenght + \stepcounter{spidercount} + \addToList{skilllist}{#1} + \addToList{masterlist}{#2} +} + +\newcounter{var} +\newenvironment{SpiderDiagram}[2]{ % Axes color, Highlight color + \def\n{\thespidercount} + \def\N{5} + \def\nC{#1} + \def\hC{#2} + \vspace*{0.15cm} +}{ + \begin{tikzpicture}[scale=0.35] + \foreach \x in{1,2,...,\n}{ + \setcounter{var}{360/\n*\x} + \ifthenelse{\thevar = 180 \OR \thevar = 360}{ + \draw [draw=\nC, very thick] (0,0)--(\thevar:\N) node + [shift=(\thevar-145:-15pt), + color=\hC] {\small\getFromList{skilllist}{\x}} + } + { + \draw [draw=\nC, very thick] (0,0)--(\thevar:\N) node + [shift=(\thevar:10pt), + color=\hC] {\small\getFromList{skilllist}{\x}} + } + ; + } + \newcounter{temp} + \newcounter{tempbis} + \foreach[count=\x] \y in{2,3,...,\n}{ + \setcounter{temp}{\getFromList{masterlist}{\x}} + \setcounter{tempbis}{\getFromList{masterlist}{\y}} + \draw [draw=\hC, very thick] + (360/\n*\x:\thetemp) -- (360/\n*\x+360/\n:\thetempbis); + } + \setcounter{temp}{\getFromList{masterlist}{\n}} + \setcounter{tempbis}{\getFromList{masterlist}{1}} + \draw [draw=\hC, very thick] + (360:\thetemp) -- (360+360/\n:\thetempbis); + + + \end{tikzpicture} +} + + +%%%%%%%%%%%%%% Main part + +%%%%%% Section title +\newcommand{\MainTitleBis}[4]{%Background color, Highlight color, Left text, Right text + \begin{tikzpicture}[baseline] + \node[draw=#2,rounded corners,fill=#1,inner sep=3pt, very thick, anchor=west] + at (0,0) (box1) + {\textbf{\Large\color{#2}#3}}; + \node[draw=#2,rounded corners,fill=#1,inner sep=3pt, very thick, anchor=east] + at (\textwidth,0) (square) + {\textbf{\Large\color{#2}#4}}; + \draw [very thick, draw=#2, inner sep=0pt] (box1) -- (square); + \end{tikzpicture}\\ +} +\newcommand{\MainTitle}[3]{%Background color, Highlight color, Title text + \begin{tikzpicture}[baseline] + \node[draw=#2,rounded corners,fill=#1,inner sep=3pt, very thick, anchor=west] + at (0,0) (box1) + {\textbf{\Large\color{#2}#3}}; + \node at (\textwidth,0) [rectangle, draw=#2,rounded corners=0.5mm,fill=#1, anchor=east, very thick] (square) {}; + \draw [very thick, draw=#2, inner sep=0pt] (box1) -- (square); + \end{tikzpicture}\\ +} + +\def\hrulefill{\leavevmode\leaders\hrule height 0.35mm\hfill\kern\z@} % ~ very thick +%%%%%%% Experience +\newcommand{\Experience}[5]{%Highlight color, Ttile, Left subtitle, Right subtitle, Description + \begin{flushleft} + \large{\textbf{#2\hfill{\small\color{#1}#4}}}\\\vspace{-.4ex} + \small{{\color{#1}\hrulefill} + \hspace{1ex}\raisebox{-.4ex}{\color{Black}\textbf{#3}} + }\\ + \normalsize{#5}% Description + \end{flushleft} +} + + + + +%%%%%% Common tools + +%%% Text separators + +\newcommand{\TextSeparator}[2]% Highlight color, Text +{ + \noindent\makebox[\linewidth]{{\color{#1}\hrulefill} + \hspace{1ex}\raisebox{-.4ex}{\textbf{\large{#2}}} + \hspace{1ex}{\color{#1}\hrulefill}} +} + +\newcommand{\TextSeparatorBis}[3]% Highlight color, Left text, Right text +{ + \noindent\makebox[\linewidth]{\raisebox{-.4ex}{\textbf{\large{#2}}}\hspace{1ex} + {\color{#1}\hrulefill} + \hspace{1ex}\raisebox{-.4ex}{\textbf{\large{#3}}}} +} + +\newcommand{\SimpleSeparator}[1]% Highlight color +{ + \noindent\makebox[\linewidth]{ + {\color{#1}\hrulefill}} +} + +%%% ItemList +\usepackage{enumerate} +\newenvironment{ItemList}[1] % Bullet color + { \renewcommand{\descriptionlabel}[1]{ + \def\temp{##1}\ifx\temp\empty + \hspace\labelsep{\textbf{\color{#1}\tiny\faSquare}}% Default bullet + \else + \hspace\labelsep{\textbf{\color{#1}##1}} + \fi + }% + \begin{description}} + {\end{description}} + + +%%% DoubleColumns +\newenvironment{DoubleColumns}{ + %%%%%%%%% Use this command to split + \newcommand{\nextcolumn}{\end{center}\end{minipage}\hfill\begin{minipage}[t]{0.5\textwidth-0.5\margin}\begin{center}} + + \begin{minipage}[t]{0.5\textwidth-0.5\margin} + \begin{center} +}{ + \end{center} + \end{minipage}\\\vspace*{0.15cm} +} + +%%% TripleColumns +\newenvironment{TripleColumns}{ + %%%%%%%%% Use this command to split + \newcommand{\nextcolumn}{\end{center}\end{minipage}\hfill\begin{minipage}[t]{0.3333\textwidth-0.5\margin}\begin{center}} + + \begin{minipage}[t]{0.3333\textwidth-0.5\margin} + \begin{center} +}{ + \end{center} + \end{minipage}\\\vspace*{0.15cm} +} + +%%% Label +\newcommand{\Label}[2]{% Highlight color, Text + \tikz[baseline]\node[anchor=base,draw=#1,rounded corners,inner xsep=1ex,inner ysep =0.75ex,text height=1.5ex,text depth=.25ex, thick]{#2}; +} + + + +%%% Skill Gauges +\newenvironment{SkillGauges}[1]{% Highlight color + \def\highlightColor{\color{#1}} + \begin{tabular}{l l} +}{ + \end{tabular} +} +\newcommand{\addGauge}[3][\faSquareO]{% Optional fa symbol | Text | Number of symbols + #2 & \foreach \i in{1,...,#3}{\highlightColor#1\space} \\ +}