From 6c0abb045cd2fb72952f6efbc295da7f52f8851a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Desmaretz?= Date: Tue, 23 Jan 2024 10:59:27 +0100 Subject: [PATCH] data --- cv/cv.typ | 349 ++++++++++++++++++++++++++++++++++++++++ cv/utils.typ | 42 +++++ data/education.yaml | 132 +++++++++++++++ data/en/education.yaml | 18 +++ data/en/experience.yaml | 32 ++++ data/en/interests.yaml | 101 ++++++++++++ data/en/languages.yaml | 16 ++ data/en/months.yaml | 54 +++++++ data/en/personal.yaml | 15 ++ data/en/skills.yaml | 154 ++++++++++++++++++ data/experience.yaml | 86 ++++++++++ data/interests.yaml | 101 ++++++++++++ data/languages.yaml | 16 ++ data/personal.yaml | 16 ++ data/skills.yaml | 154 ++++++++++++++++++ example.yml | 221 +++++++++++++++++++++++++ main.typ | 48 ++++++ 17 files changed, 1555 insertions(+) create mode 100644 cv/cv.typ create mode 100644 cv/utils.typ create mode 100644 data/education.yaml create mode 100644 data/en/education.yaml create mode 100644 data/en/experience.yaml create mode 100644 data/en/interests.yaml create mode 100644 data/en/languages.yaml create mode 100644 data/en/months.yaml create mode 100644 data/en/personal.yaml create mode 100644 data/en/skills.yaml create mode 100644 data/experience.yaml create mode 100644 data/interests.yaml create mode 100644 data/languages.yaml create mode 100644 data/personal.yaml create mode 100644 data/skills.yaml create mode 100644 example.yml create mode 100644 main.typ diff --git a/cv/cv.typ b/cv/cv.typ new file mode 100644 index 0000000..6c39a1e --- /dev/null +++ b/cv/cv.typ @@ -0,0 +1,349 @@ +#import "utils.typ" + +// set rules +#let setrules(uservars, doc) = { + set text( + font: uservars.bodyfont, + size: uservars.fontsize, + hyphenate: false, + ) + + set list( + spacing: uservars.linespacing + ) + + set par( + leading: uservars.linespacing, + justify: true, + ) + + doc +} + +// show rules +#let showrules(uservars, doc) = { + // uppercase section headings + show heading.where( + level: 2, + ): it => block(width: 100%)[ + #set align(left) + #set text(font: uservars.headingfont, size: 1em, weight: "bold") + #if (uservars.at("headingsmallcaps", default:false)) { + smallcaps(it.body) + } else { + // upper(it.body) + it.body + } + #v(-0.75em) #line(length: 100%, stroke: 1pt + black) // draw a line + ] + + // name title + show heading.where( + level: 1, + ): it => block(width: 100%)[ + #set text(font: uservars.headingfont, size: 2em, weight: "bold") + #if (uservars.at("headingsmallcaps", default:false)) { + smallcaps(it.body) + } else { + // upper(it.body) + it.body + } + #v(2pt) + ] + + doc +} + +// set page layout +#let cvinit(doc) = { + doc = setrules(doc) + doc = showrules(doc) + + doc +} + +// address +#let addresstext(info, uservars) = { + if uservars.showAddress { + block(width: 100%)[ + #info.personal.location.city, #info.personal.location.region, #info.personal.location.country + #v(-4pt) + ] + } else {none} +} + +#let fa(body) = { + set text(font:"FontAwesome") + [#body] +} + + +#let contacttext(info, uservars) = block(width: 100%)[ + #let profiles = ( + box(link("mailto:" + info.personal.email)[#fa(" ") #info.personal.email]), + if uservars.showNumber {box(link("tel:" + info.personal.phone)[#fa("") #info.personal.phone])} else {none}, + if info.personal.url != none { + box(link(info.personal.url)[#fa(" ") #info.personal.url.split("//").at(1)]) + } + ).filter(it => it != none) // filter out none elements from the profile array + + #if info.personal.profiles.len() > 0 { + for profile in info.personal.profiles { + profiles.push( + box(link(profile.url)[#profile.username]) + ) + } + } + + #set text(font: uservars.bodyfont, weight: "light", size: uservars.fontsize * 1) + #pad(x: 0em)[ + #profiles.join([#sym.space.en|#sym.space.en]) + ] +] + +#let cvheading(info, uservars) = { + align(center)[ + = #info.personal.name + #addresstext(info, uservars) + #contacttext(info, uservars) + ] +} + +#let cvwork(info, isbreakable: true) = { + if info.experience != none {block[ + == Work Experience + #for w in info.experience { + block(width: 100%, breakable: isbreakable)[ + #if w.url != none [ + *#link(w.url)[#w.with]* #h(1fr) *#w.where* \ + ] else [ + *#w.with* #h(1fr) *#w.where* \ + ] + ] + // create a block layout for each work entry + let index = 0 + for p in w.what { + if index != 0 {v(0.6em)} + block(width: 100%, breakable: isbreakable, above: 0.6em)[ + // parse ISO date strings into datetime objects + #let start = utils.strpdate(p.startDate) + #let end = utils.strpdate(p.endDate) + // line 2: position and date range + #text(style: "italic")[#p.what] #h(1fr) + #start #sym.dash.en #end \ + // highlights or description + #for hi in p.why [ + - #eval(hi, mode: "markup") + ] + ] + index = index + 1 + } + } + ]} +} + +#let cveducation(info, isbreakable: true) = { + if info.education != none {block[ + == Education + #for edu in info.education { + let start = utils.strpdate(edu.startDate) + let end = utils.strpdate(edu.endDate) + + let edu-items = "" + if edu.honors != none {edu-items = edu-items + "- *Honors*: " + edu.honors.join(", ") + "\n"} + if edu.why != none {edu-items = edu-items + "- *Courses*: " + edu.why.join(", ") + "\n"} + if edu.highlights != none { + for hi in edu.highlights { + edu-items = edu-items + "- " + hi + "\n" + } + edu-items = edu-items.trim("\n") + } + + // create a block layout for each education entry + block(width: 100%, breakable: isbreakable)[ + // line 1: institution and location + #if edu.url != none [ + *#link(edu.url)[#edu.with]* #h(1fr) *#edu.what* \ + ] else [ + *#edu.with* #h(1fr) *#edu.what* \ + ] + // line 2: degree and date + #text(style: "italic")[#edu.what] #h(1fr) + #start #sym.dash.en #end \ + #eval(edu-items, mode: "markup") + ] + } + ]} +} + +#let cvaffiliations(info, isbreakable: true) = { + if info.affiliations != none {block[ + == Leadership & Activities + #for org in info.affiliations { + // parse ISO date strings into datetime objects + let start = utils.strpdate(org.startDate) + let end = utils.strpdate(org.endDate) + + // create a block layout for each affiliation entry + block(width: 100%, breakable: isbreakable)[ + // line 1: organization and location + #if org.url != none [ + *#link(org.url)[#org.with]* #h(1fr) *#org.where* \ + ] else [ + *#org.with* #h(1fr) *#org.where* \ + ] + // line 2: position and date + #text(style: "italic")[#org.position] #h(1fr) + #start #sym.dash.en #end \ + // highlights or description + #if org.highlights != none { + for hi in org.highlights [ + - #eval(hi, mode: "markup") + ] + } else {} + ] + } + ]} +} + +#let cvprojects(info, isbreakable: true) = { + if info.projects != none {block[ + == Projects + #for project in info.projects { + // parse ISO date strings into datetime objects + let start = utils.strpdate(project.startDate) + let end = utils.strpdate(project.endDate) + // create a block layout for each project entry + block(width: 100%, breakable: isbreakable)[ + // line 1: project name + #if project.url != none [ + *#link(project.url)[#project.name]* \ + ] else [ + *#project.name* \ + ] + // line 2: organization and date + #text(style: "italic")[#project.affiliation] #h(1fr) #start #sym.dash.en #end \ + // summary or description + #for hi in project.highlights [ + - #eval(hi, mode: "markup") + ] + ] + } + ]} +} + +#let cvawards(info, isbreakable: true) = { + if info.awards != none {block[ + == Honors & Awards + #for award in info.awards { + // parse ISO date strings into datetime objects + let date = utils.strpdate(award.date) + // create a block layout for each award entry + block(width: 100%, breakable: isbreakable)[ + // line 1: award title and location + #if award.url != none [ + *#link(award.url)[#award.title]* #h(1fr) *#award.location* \ + ] else [ + *#award.title* #h(1fr) *#award.location* \ + ] + // line 2: issuer and date + Issued by #text(style: "italic")[#award.issuer] #h(1fr) #date \ + // summary or description + #if award.highlights != none { + for hi in award.highlights [ + - #eval(hi, mode: "markup") + ] + } else {} + ] + } + ]} +} + +#let cvcertificates(info, isbreakable: true) = { + if info.certificates != none {block[ + == Licenses & Certifications + + #for cert in info.certificates { + // parse ISO date strings into datetime objects + let date = utils.strpdate(cert.date) + // create a block layout for each certificate entry + block(width: 100%, breakable: isbreakable)[ + // line 1: certificate name + #if cert.url != none [ + *#link(cert.url)[#cert.name]* \ + ] else [ + *#cert.name* \ + ] + // line 2: issuer and date + Issued by #text(style: "italic")[#cert.issuer] #h(1fr) #date \ + ] + } + ]} +} + +#let cvpublications(info, isbreakable: true) = { + if info.publications != none {block[ + == Research & Publications + #for pub in info.publications { + // parse ISO date strings into datetime objects + let date = utils.strpdate(pub.releaseDate) + // create a block layout for each publication entry + block(width: 100%, breakable: isbreakable)[ + // line 1: publication title + #if pub.url != none [ + *#link(pub.url)[#pub.name]* \ + ] else [ + *#pub.name* \ + ] + // line 2: publisher and date + Published on #text(style: "italic")[#pub.publisher] #h(1fr) #date \ + ] + } + ]} +} + +#let cvskills(info, isbreakable: true) = { + if (info.languages != none) or (info.skills != none) or (info.interests != none) {block(breakable: isbreakable)[ + == Skills, Languages, Interests + #if (info.languages != none) [ + #let langs = () + #for lang in info.languages { + langs.push([#lang.language (#lang.fluency)]) + } + - *Languages*: #langs.join(", ") + ] + #if (info.skills != none) [ + #for group in info.skills [ + - *#group.category*: #group.skills.join(", ") + ] + ] + #if (info.interests != none) [ + - *Interests*: #info.interests.join(", ") + ] + ]} +} + +#let cvreferences(info, isbreakable: true) = { + if info.references != none {block[ + == References + #for ref in info.references { + block(width: 100%, breakable: isbreakable)[ + #if ref.url != none [ + - *#link(ref.url)[#ref.name]*: "#ref.reference" + ] else [ + - *#ref.name*: "#ref.reference" + ] + ] + } + ]} else {} +} + +#let endnote() = { + place( + bottom + right, + block[ + #set text(size: 5pt, font: "Consolas", fill: silver) + Félix Desmaretz #datetime.today().display("[year]-[month]-[day]") + ] + ) +} \ No newline at end of file diff --git a/cv/utils.typ b/cv/utils.typ new file mode 100644 index 0000000..8abc926 --- /dev/null +++ b/cv/utils.typ @@ -0,0 +1,42 @@ +// Helper Functions +#let monthname(n, display: "short") = { + n = int(n) + let month = "" + + if n == 1 { month = "January" } + else if n == 3 { month = "March" } + else if n == 2 { month = "February" } + else if n == 4 { month = "April" } + else if n == 5 { month = "May" } + else if n == 6 { month = "June" } + else if n == 7 { month = "July" } + else if n == 8 { month = "August" } + else if n == 9 { month = "September" } + else if n == 10 { month = "October" } + else if n == 11 { month = "November" } + else if n == 12 { month = "December" } + else { result = none } + if month != none { + if display == "short" { + month = month.slice(0, 3) + } else { + month + } + } + month +} + +#let strpdate(isodate) = { + let date = "" + if lower(isodate) != "present" { + date = datetime( + year: int(isodate.slice(0, 4)), + month: int(isodate.slice(5, 7)), + day: int(isodate.slice(8, 10)) + ) + date = date.display("[month repr:short]") + " " + date.display("[year repr:full]") + } else if lower(isodate) == "present" { + date = "Present" + } + return date +} \ No newline at end of file diff --git a/data/education.yaml b/data/education.yaml new file mode 100644 index 0000000..0a8d90b --- /dev/null +++ b/data/education.yaml @@ -0,0 +1,132 @@ +# licence_maths: +# startDate: 2016-09-01 +# endDate: 2019-06-01 +# fr: +# what: Licence de Mathématiques +# with: Université Paris 7 Diderot +# where: Paris (75) +# why: +# - Mention Bien +# en: +# what: Bachelor of Mathematics +# with: Université Paris 7 Diderot +# where: Paris, France +# why: +# - Honours +# licence_info: +# startDate: 2016-09-01 +# endDate: 2019-06-01 +# fr: +# what: Licence d’Informatique +# with: Université Paris 7 Diderot +# where: Paris (75) +# why: +# - 1ère place à la journée francilienne de programmation 2019 +# - Mention Bien +# en: +# what: Bachelor's degree in Computer Science +# with: Université Paris 7 Diderot +# where: Paris, France +# why: +# - 1st place at the JFP2019 contest +# - Honours +# bafa: +# startDate: 2017-05-01 +# endDate: 2017-05-01 +# fr: +# what: Brevet d’Aptitude aux Fonctions d’Animateur (BAFA) +# with: UFCV +# where: Paris (75) +# why: +# en: +# what: BAFA ( Youth Work Diploma - French qualification) +# with: UFCV +# where: Paris, France +# why: +#bac: +# startDate: 2013-09-01 +# endDate: 2016-06-01 +# fr: +# what: Baccalauréat Scientifique – Mention Bien +# with: Lycée Michelet +# where: Vanves (92) +# # why: +# # - Membre du commité de rédaction du Zeugma +# # - Élu Académique au Conseil pour la Vie Lycéenne +# en: +# what: Baccalauréat scientifique - with Honours +# with: Lycée Michelet +# where: Vanves, France +# # why: +# # - Member of the editorial board of the high school newspaper 'Zeugma' +# # - Academically Elected to the High School Life Council +master_info: + startDate: 2019-09-01 + endDate: 2021-09-01 + fr: + what: Master d’Informatique - Sciences des données + with: Université de Paris + where: Paris (75) + why: + - Théorie des jeux, Technologies du Big Data, Algorithmique, Base de données, Algorithmique répartie, Data Scraping + - Mention Très Bien + en: + what: Master's degree in computer science - Data Science + with: Université de Paris + where: Paris, France + why: + - Game Theory, Big Data Technologies, Algorithms, Database, Distributed Algorithms, Data Scraping + - Highest Honours +master_maths: + startDate: 2019-09-01 + endDate: 2021-09-01 + fr: + what: Master de Mathématiques – Sciences des données + with: Université de Paris + where: Paris (75) + why: + - Probabilités, Statistiques, Optimisation, NLP, Machine Learning, Deep Learning, Algorithmique Big Data + - Mention Très Bien + en: + what: Master of Mathematics - Data Science + with: Université de Paris + where: Paris, France + why: + - Probabilities, Statistics, Optimization, NLP, Machine Learning, Deep Learning, Big Data Algorithms + - Highest Honours +# master1: +# startDate: 2019-09-01 +# endDate: 2020-06-01 +# fr: +# what: Master 1 d’Informatique, Master 1 de Mathématiques – Sciences des données – Mention Bien +# with: Université de Paris +# where: Paris (75) +# why: +# - Probablités, Statistiques, Optimisation +# - Théorie des jeux, Technologies du Big Data, Algorithmique +# - Membre actif de l’association IP7 – Aide à la mise en place d’un concours de programmation +# en: +# what: 1st year of Master's degree in computer science, 1st year of Master of Mathematics - Data Science - with Honours +# with: Université de Paris +# where: Paris, France +# why: +# - Probabilities, Statistics, Optimization +# - Game Theory, Big Data Technologies, Algorithms +# - Active member of the IP7 association - Help in setting up a programming contest +# master2: +# startDate: 2020-09-01 +# endDate: 2021-09-01 +# fr: +# what: Master 2 d’Informatique, Master 2 de Mathématiques – Sciences des données +# with: Université de Paris +# where: Paris (75) +# why: +# - NLP, Machine Learning, Deep Learning, Algorithmique des données massives +# - Base de données, Algorithmique répartie, Méthodes algorithmiques pour l'accès à l'information numérique +# en: +# what: +# with: Université de Paris +# where: Paris, France +# why: +# - NLP, Machine Learning, Deep Learning, Massive Data Algorithms +# - Database, Distributed Algorithms, Algorithmic Methods for Accessing Digital Information diff --git a/data/en/education.yaml b/data/en/education.yaml new file mode 100644 index 0000000..124c57b --- /dev/null +++ b/data/en/education.yaml @@ -0,0 +1,18 @@ +master_info: + startDate: 2019-09-01 + endDate: 2021-09-01 + what: Master's degree in computer science - Data Science + with: Université de Paris + where: Paris, France + why: + - Game Theory, Big Data Technologies, Algorithms, Database, Distributed Algorithms, Data Scraping + - Highest Honours +master_maths: + startDate: 2019-09-01 + endDate: 2021-09-01 + what: Master of Mathematics - Data Science + with: Université de Paris + where: Paris, France + why: + - Probabilities, Statistics, Optimization, NLP, Machine Learning, Deep Learning, Big Data Algorithms + - Highest Honours \ No newline at end of file diff --git a/data/en/experience.yaml b/data/en/experience.yaml new file mode 100644 index 0000000..3cd6042 --- /dev/null +++ b/data/en/experience.yaml @@ -0,0 +1,32 @@ +- where: Paris, France + with: Diggers + url: https://diggers-consulting.com/ + what: + - startDate: 2022-02-04 + endDate: present + what: Data Engineer Consultant - Natixis + why: + - Management, design and implementation of multi-stream data producer computing and sending up to 1 billion messages per day. + - Implementation of financial data computation in a distributed environment. + - Scala, SQL, Spark, Kafka, Hive, Typelevel +- where: Montrouge, France + with: Crédit Agricole Leasing & Factoring + url: https://www.ca-leasingfactoring.com/ + what: + - startDate: 2021-04-16 + endDate: 2021-10-16 + what: Data Scientist Intern + why: + - "Feature Engineering via network modeling \\& analysis giving a 10\\% score improvement for prediction models" + - Development of a multi-environment pipeline execution program allowing the usage of tools missing in one or another + - Python, Scala, SQL, Spark, Pandas, Hive, XGBoost, iGraph, GraphX +- with: University Association IP7 + where: Paris, France + url: http://ip7.informatique.univ-paris-diderot.fr:8080/ + what: + - what: Volunteer + startDate: 2018-09-01 + endDate: 2021-06-01 + why: + - "Help in setting up a programming contest \\& writing algorithmic problems" + - Facilitator for multiple Linux installation parties diff --git a/data/en/interests.yaml b/data/en/interests.yaml new file mode 100644 index 0000000..c64427d --- /dev/null +++ b/data/en/interests.yaml @@ -0,0 +1,101 @@ +# content_fr: &interests_content_fr +# - Programmation Compétitive +# - Jeux de société & vidéo +# - Randonnées +# - Guitare +# - Danse Rock +# - Japanimation +# - Cinéma +# content_en: &interests_content_en +# - Competitive Programming +# - Board & Video games +# - Hiking +# - Guitar +# - Rock Dancing +# - Japanese animation +# - Cinema +# fr: +# title: "Centres d'intérêts" +# content: *interests_content_fr +# en: +# title: "Hobbies & Interests" +# content: *interests_content_en +computer: + content_fr: &cfr + - Programmation Compétitive + content_en: &cen + - Competitive Programming + fr: + title: Informatique + content: *cfr + en: + title: Computers + content: *cen +sports: + content_fr: &sfr + - Randonnées + - Course à pied + - Escalade + content_en: &sen + - Hiking + - Running + - Climbing + fr: + title: Sports + content: *sfr + en: + title: Sports + content: *sen +video: + content_fr: &vfr + - Japanimation + - Cinéma + content_en: &ven + - Japanese animation + - Cinema + fr: + title: Vidéo + content: *vfr + en: + title: Video entertainment + content: *ven +games: + content_fr: &gfr + - Jeux de société + - Jeux vidéo + content_en: &gen + - Board games + - Video games + fr: + title: Jeux + content: *gfr + en: + title: Gaming entertainment + content: *gen +music: + content_fr: &mfr + - Guitare + - Math-rock + - Electro-Pop + content_en: &men + - Guitar + - Math-rock + - Electro-Pop + fr: + title: Musique + content: *mfr + en: + title: Music + content: *men +# other: +# type: single +# content_fr: &ofr +# - Jonglage +# content_en: &oen +# - Juggling +# fr: +# title: Autres +# content: *ofr +# en: +# title: Others +# content: *oen diff --git a/data/en/languages.yaml b/data/en/languages.yaml new file mode 100644 index 0000000..ab4f0be --- /dev/null +++ b/data/en/languages.yaml @@ -0,0 +1,16 @@ +french: + type: single + fr: + title: Français + content: Maternelle + en: + title: French + content: Native +english: + type: single + fr: + title: Anglais + content: Courant + en: + title: English + content: Fluent diff --git a/data/en/months.yaml b/data/en/months.yaml new file mode 100644 index 0000000..e070370 --- /dev/null +++ b/data/en/months.yaml @@ -0,0 +1,54 @@ +long: + en: + - January + February + March + April + May + June + July + August + September + October + November + December + fr: + - Janvier + Février + Mars + Avril + Mai + Juin + Juillet + Août + Septembre + Octobre + Novembre + Décembre +short: + en: + - Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + fr: + - Janv + Févr + Mars + Avr + Mai + Juin + Juill + Août + Sept + Oct + Nov + Déc \ No newline at end of file diff --git a/data/en/personal.yaml b/data/en/personal.yaml new file mode 100644 index 0000000..53fb8a9 --- /dev/null +++ b/data/en/personal.yaml @@ -0,0 +1,15 @@ +name: Félix Desmaretz +email: job@felix-desmaretz.eu +phone: (+33) 6 52 93 43 54 +url: https://www.felix-desmaretz.eu/en +location: + city: Malakoff + region: Hauts-de-Seine + country: France +profiles: + - network: LinkedIn + username:  felix-desmaretz + url: https://linkedin.com/in/felix-desmaretz + - network: GitHub + username:  firgaty + url: https://github.com/firgaty \ No newline at end of file diff --git a/data/en/skills.yaml b/data/en/skills.yaml new file mode 100644 index 0000000..4d6a508 --- /dev/null +++ b/data/en/skills.yaml @@ -0,0 +1,154 @@ +computer_languages: + content_computer_languages: &content_computer_languages + - Python + - Scala + - SQL + - Java + - Clojure + - R + - C + - C++ + - LaTeX + - Bash + - VBA + fr: + title: Langages Informatique + content: *content_computer_languages + en: + title: Computer Languages + content: *content_computer_languages +libraries: + content: &content_data_tools + - Numpy + - Pandas + - Spark/PySpark + - PyTorch + - Spacy + - Jupyter + - scikit-learn + - Tidyverse + - XGBoost + - Typelevel + fr: + title: Librairies + content: *content_data_tools + en: + title: Libraries + content: *content_data_tools +frameworks: + content: &content_frameworks + - Flask + - Hugo + - QT + fr: + title: Frameworks + content: *content_frameworks + en: + title: Frameworks + content: *content_frameworks + +data_science: + content_fr: &ds_content_fr + - Analyse de données + - Calcul distribué + - Data Mining + - NLP + - Machine-Learning + - Deep-Learning + - Base de données + - Analyse de réseaux + - Analyse de séries temporelles + content_en: &ds_content_en + - Data Analysis + - Optimization + - Distributed Computing + - Data Mining + - NLP + - Machine-Learning + - Deep-Learning + - Database Systems + - Network Analysis + - Time Series Analysis + fr: + title: "Sciences et Ingénierie des Données" + content: *ds_content_fr + en: + title: Data Science and Engineering + content: *ds_content_en +os: + fr: + title: "Systèmes d'Exploitation" + content: + - Systèmes UNIX: [Linux, BSD] + - Windows + en: + title: "Operating Systems" + content: + - UNIX systems: [Linux, BSD] + - Windows +db: + content: + &db_content [ + PostgreSQL, + SQLite, + Neo4j, + Cassandra, + MariaDB, + Apache Hive, + SAP IQ, + SAP ASE, + ] + fr: + title: Bases de données + content: *db_content + en: + title: Database systems + content: *db_content +office_automation: + content: &content + - Microsoft Office: [Word, Excel, PowerPoint, Outlook] + - Libre Office + fr: + title: "Bureautique" + content: *content + en: + title: "Office Automation" + content: *content +project_management: + content: &other_content [Git, Kanban, Scrum, Agile] + fr: + title: Gestion de Projet + content: *other_content + en: + title: Project Management + content: *other_content +other_it: + content: &other_it_content + - Apache Hadoop: ["YARN", "MapR", "HDFS"] + - Docker + - Proxmox VE + fr: + title: "Autres Outils Informatiques" + content: *other_it_content + en: + title: "Other IT Tools" + content: *other_it_content +interests: + fr: + title: Intérêts + content: + - Jeux de Société + - Japanimation + - Randonnées + - Escalade + - Creative Coding + - Course à Pied + en: + title: Interests + content: + - Board Games + - Japanimation + - Hiking + - Climbing + - Creative Coding + - Running diff --git a/data/experience.yaml b/data/experience.yaml new file mode 100644 index 0000000..e8acb67 --- /dev/null +++ b/data/experience.yaml @@ -0,0 +1,86 @@ +# 3quatre: +# startDate: 2011-09-01 +# endDate: 2019-09-01 +# fr: +# what: Animateur Bénévole +# with: Association 3quatre +# where: Malakoff (92) +# why: +# - Organisation évènementielle +# - Encadrement de groupe de musiques de mineurs de 13 à 16 ans +# - Animation d’atelier de découverte musicale pour mineurs de 8 à 12 ans +# en: +# what: Volunteer facilitator +# with: Association 3quatre +# where: Malakoff, France +# why: +# - Event organization +# - Supervision of music groups of minors aged 13 to 16 years old +# - Supervision of musical discovery workshops for minors aged 8 to 12 years old +# interim: +# startDate: 2018-08-01 +# endDate: 2018-09-01 +# fr: +# what: Intérimaire +# with: Synergie Paris Tertiaire +# where: Paris (75) +# why: +# - Mission pour le service LADOM (L’Agence De l’Outre-mer pour la Mobilité) – Opérateur de saisie +# en: +# what: Temporary Worker +# with: Synergie Paris Tertiaire +# where: Paris, France +# why: +# - Mission at the LADOM service of the French Ministry of Overseas - Data Entry Operator +associationIP7: + startDate: 2018-09-01 + endDate: 2021-06-01 + fr: + what: Bénévole + with: Association Universitaire IP7 + where: Paris (75) + why: + - "Mise en place d’un concours de programmation \\& écriture de problèmes algorithmiques" + - Animateur de plusieurs install party Linux + en: + what: Volunteer + with: University Association IP7 + where: Paris, France + why: + - "Help in setting up a programming contest \\& writing algorithmic problems" + - Facilitator for multiple Linux installation parties +stageCALF: + where: Montrouge (92), France + with: Crédit Agricole Leasing \& Factoring + what: + - startDate: 2021-04-16 + endDate: 2021-10-16 + fr: + - what: Data Scientist Stagiaire + why: + - "Feature engineering via modélisation \\& analyse de graphes augmentant les scores des modèles de prédictions de 10\\%" + - Développement d'une solution d'exécution de chaînes de traitement multi-environnements permettant un plus large choix d'outils. + - Python, Scala, SQL, Spark, Pandas, Hive, XGBoost, iGraph, GraphX + en: + why: + - "Feature Engineering via network modeling \\& analysis giving a 10\\% score improvement for prediction models" + - Development of a multi-environment pipeline execution program allowing the usage of tools missing in one or another + - Python, Scala, SQL, Spark, Pandas, Hive, XGBoost, iGraph, GraphX +consultantDiggers: + where: Paris (75), France + with: Diggers + what: + - startDate: 2022-02-04 + # endDate: 2024-02-14 + fr: + what: Consultant Data Engineer - Natixis + why: + - Gestion, conception et développement d'un service d'alimentation de données multi-flux calculant et produisant jusqu'à 1 milliard de messages par jour. + - Développement de batchs de calculs de données financières en environnement distribué. + - Scala, SQL, Spark, Kafka, Hive, Typelevel + en: + what: Data Engineer Consultant - Natixis + why: + - Management, design and implementation of multi-stream data producer computing and sendDateing up to 1 billion messages per day. + - Implementation of financial data computation in a distributed environment. + - Scala, SQL, Spark, Kafka, Hive, Typelevel diff --git a/data/interests.yaml b/data/interests.yaml new file mode 100644 index 0000000..c64427d --- /dev/null +++ b/data/interests.yaml @@ -0,0 +1,101 @@ +# content_fr: &interests_content_fr +# - Programmation Compétitive +# - Jeux de société & vidéo +# - Randonnées +# - Guitare +# - Danse Rock +# - Japanimation +# - Cinéma +# content_en: &interests_content_en +# - Competitive Programming +# - Board & Video games +# - Hiking +# - Guitar +# - Rock Dancing +# - Japanese animation +# - Cinema +# fr: +# title: "Centres d'intérêts" +# content: *interests_content_fr +# en: +# title: "Hobbies & Interests" +# content: *interests_content_en +computer: + content_fr: &cfr + - Programmation Compétitive + content_en: &cen + - Competitive Programming + fr: + title: Informatique + content: *cfr + en: + title: Computers + content: *cen +sports: + content_fr: &sfr + - Randonnées + - Course à pied + - Escalade + content_en: &sen + - Hiking + - Running + - Climbing + fr: + title: Sports + content: *sfr + en: + title: Sports + content: *sen +video: + content_fr: &vfr + - Japanimation + - Cinéma + content_en: &ven + - Japanese animation + - Cinema + fr: + title: Vidéo + content: *vfr + en: + title: Video entertainment + content: *ven +games: + content_fr: &gfr + - Jeux de société + - Jeux vidéo + content_en: &gen + - Board games + - Video games + fr: + title: Jeux + content: *gfr + en: + title: Gaming entertainment + content: *gen +music: + content_fr: &mfr + - Guitare + - Math-rock + - Electro-Pop + content_en: &men + - Guitar + - Math-rock + - Electro-Pop + fr: + title: Musique + content: *mfr + en: + title: Music + content: *men +# other: +# type: single +# content_fr: &ofr +# - Jonglage +# content_en: &oen +# - Juggling +# fr: +# title: Autres +# content: *ofr +# en: +# title: Others +# content: *oen diff --git a/data/languages.yaml b/data/languages.yaml new file mode 100644 index 0000000..ab4f0be --- /dev/null +++ b/data/languages.yaml @@ -0,0 +1,16 @@ +french: + type: single + fr: + title: Français + content: Maternelle + en: + title: French + content: Native +english: + type: single + fr: + title: Anglais + content: Courant + en: + title: English + content: Fluent diff --git a/data/personal.yaml b/data/personal.yaml new file mode 100644 index 0000000..ad7710b --- /dev/null +++ b/data/personal.yaml @@ -0,0 +1,16 @@ +name: Félix Desmaretz +email: job@felix-desmaretz.eu +phone: (+33) 6 52 93 43 54 +url: https://www.felix-desmaretz.eu/en +location: + city: Malakoff + region: Hauts-de-Seine + # postalCode: 92 + country: France +profiles: + - network: LinkedIn + username:  felix-desmaretz + url: https://linkedin.com/in/felix-desmaretz + - network: GitHub + username:  firgaty + url: https://github.com/firgaty \ No newline at end of file diff --git a/data/skills.yaml b/data/skills.yaml new file mode 100644 index 0000000..4d6a508 --- /dev/null +++ b/data/skills.yaml @@ -0,0 +1,154 @@ +computer_languages: + content_computer_languages: &content_computer_languages + - Python + - Scala + - SQL + - Java + - Clojure + - R + - C + - C++ + - LaTeX + - Bash + - VBA + fr: + title: Langages Informatique + content: *content_computer_languages + en: + title: Computer Languages + content: *content_computer_languages +libraries: + content: &content_data_tools + - Numpy + - Pandas + - Spark/PySpark + - PyTorch + - Spacy + - Jupyter + - scikit-learn + - Tidyverse + - XGBoost + - Typelevel + fr: + title: Librairies + content: *content_data_tools + en: + title: Libraries + content: *content_data_tools +frameworks: + content: &content_frameworks + - Flask + - Hugo + - QT + fr: + title: Frameworks + content: *content_frameworks + en: + title: Frameworks + content: *content_frameworks + +data_science: + content_fr: &ds_content_fr + - Analyse de données + - Calcul distribué + - Data Mining + - NLP + - Machine-Learning + - Deep-Learning + - Base de données + - Analyse de réseaux + - Analyse de séries temporelles + content_en: &ds_content_en + - Data Analysis + - Optimization + - Distributed Computing + - Data Mining + - NLP + - Machine-Learning + - Deep-Learning + - Database Systems + - Network Analysis + - Time Series Analysis + fr: + title: "Sciences et Ingénierie des Données" + content: *ds_content_fr + en: + title: Data Science and Engineering + content: *ds_content_en +os: + fr: + title: "Systèmes d'Exploitation" + content: + - Systèmes UNIX: [Linux, BSD] + - Windows + en: + title: "Operating Systems" + content: + - UNIX systems: [Linux, BSD] + - Windows +db: + content: + &db_content [ + PostgreSQL, + SQLite, + Neo4j, + Cassandra, + MariaDB, + Apache Hive, + SAP IQ, + SAP ASE, + ] + fr: + title: Bases de données + content: *db_content + en: + title: Database systems + content: *db_content +office_automation: + content: &content + - Microsoft Office: [Word, Excel, PowerPoint, Outlook] + - Libre Office + fr: + title: "Bureautique" + content: *content + en: + title: "Office Automation" + content: *content +project_management: + content: &other_content [Git, Kanban, Scrum, Agile] + fr: + title: Gestion de Projet + content: *other_content + en: + title: Project Management + content: *other_content +other_it: + content: &other_it_content + - Apache Hadoop: ["YARN", "MapR", "HDFS"] + - Docker + - Proxmox VE + fr: + title: "Autres Outils Informatiques" + content: *other_it_content + en: + title: "Other IT Tools" + content: *other_it_content +interests: + fr: + title: Intérêts + content: + - Jeux de Société + - Japanimation + - Randonnées + - Escalade + - Creative Coding + - Course à Pied + en: + title: Interests + content: + - Board Games + - Japanimation + - Hiking + - Climbing + - Creative Coding + - Running diff --git a/example.yml b/example.yml new file mode 100644 index 0000000..22b2124 --- /dev/null +++ b/example.yml @@ -0,0 +1,221 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/jskherman/cv.typ/main/cv.typ.schema.json + +personal: + name: Félix Desmaretz + email: job@felix-desmaretz.eu + phone: (+33) 6 52 93 43 54 + url: https://www.felix-desmaretz.eu/en + location: + city: Malakoff + region: New York + postalCode: 1234 + country: United States of America + profiles: + - network: LinkedIn + username: John Doe + url: https://linkedin.com/in/johndoe + - network: GitHub + username: johndoe + url: https://github.com/johndoe + +work: + - with: X Company + url: https://example.com + where: Remote / New York, New York + what: + - position: Senior Software Engineer + startDate: 2021-08-01 + # endDate: "present" + highlights: + - This being the theory I hold, why need I be afraid of not being able to reconcile it with the case of my ancestors? + - "The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains." + - Do you really believe that they charged an armed enemy, or treated their children, their own flesh and blood, so cruelly, without a thought for their own interest or advantage? + - position: Software Engineer + startDate: 2019-05-31 + endDate: 2021-08-01 + highlights: + - This being the theory I hold, why need I be afraid of not being able to reconcile it with the case of my ancestors? + - "The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains." + - Do you really believe that they charged an armed enemy, or treated their children, their own flesh and blood, so cruelly, without a thought for their own interest or advantage? + - with: National Aeronautics and Space Administration - Jet Propulsion Laboratory + url: https://example.com + where: Pasadena, California + what: + - position: Senior Developer + startDate: 2016-02-19 + endDate: 2019-05-31 + highlights: + - This being the theory I hold, why need I be afraid of not being able to reconcile it with the case of my ancestors? + - "The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains." + - Do you really believe that they charged an armed enemy, or treated their children, their own flesh and blood, so cruelly, without a thought for their own interest or advantage? + +education: + - with: Open University + url: https://example.com/ + area: Computer Science + what: Bachelor of Science + startDate: 2017-08-01 + endDate: 2021-06-30 + where: City of London, United Kingdom + honors: + - 4.0 / 4.0 GPA + - President's List + - Dean's List + why: + - Algorithms & Data Structures + - Applications in Quantitative Finance + - Engineering Data Analysis + - Compiler Architecture + highlights: + - "*Thesis*: A convolutional neural network for predicting Greenland glacier melt and glacial water flow" + - "*Activities*: Debating, Chess, Cricket" + - with: Harvard University + url: + area: Computer Science + what: Bachelor of Science + startDate: 2017-08-01 + endDate: 2021-06-30 + where: City of London, United Kingdom + honors: + - Summa Cum Laude (4.0 GPA) + - President's List + - Dean's List + why: + - Algorithms & Data Structures + - Applications in Quantitative Finance + - Engineering Data Analysis + - Compiler Architecture + highlights: + - "*Thesis*: A convolutional neural network for predicting Greenland glacier melt and glacial water flow" + - "*Activities*: Debating, Chess, Cricket" + +affiliations: + - with: White Hat Hackers Association + position: Vice President for Internal Affairs + where: Cambridge, United Kingdom + url: https://example.com + startDate: 2020-05-30 + endDate: 2021-05-30 + highlights: + - But I must explain to you how all this mistaken idea of reprobating pleasure and extolling pain arose. + - But who has any right to find fault with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no resultant pleasure? + - Can you then suppose that those heroic men performed their famous deeds without any motive at all? + - with: London Bridge Toastmasters Club + position: Member + where: City of London, United Kingdom + url: + startDate: 2022-06-15 + endDate: 2023-06-30 + highlights: + - Won Champion in the Division A District X Speech Evaluation Contest of Toastmasters International + - Promising Toastmaster of the Year (PY 2022-2023) + - Tell me, pray, what explanation do you put upon their actions? + +awards: + - title: Champion in the Division A District X Speech Evaluation Contest + date: 2023-05-09 + issuer: Toastmasters International + url: + where: City of London, United Kingdom + highlights: + - title: "Finalist in the 2020 SCG Bangkok Business Challenge Global Competition" + date: 2020-07-12 + issuer: Sasin School of Management + url: + where: Bangkok, Thailand + highlights: + - "Made it to the Top 5 (selected from over 100 teams) in the world for the semi-finals of the SCG Bangkok Business Challenge #sym.at Sasin 2020 Global Competition held at Bangkok, Thailand from July 7-12, 2020." + - "Served as the speaker and presented in the 60-second pitch round of the Opening Reception of the SCG Bangkok Business Challenge #sym.at Sasin 2022 for Team London Bridge." + +certificates: + - name: "Learning How to Learn: Powerful mental tools to help you master tough subjects" + date: 2021-09-01 + issuer: Coursera + url: https://example.com + +publications: + - name: A convolutional neural network for predicting Greenland glacier melt and glacial water flow + publisher: Theoretical and Computational Fluid Dynamics + releaseDate: 2020-09-30 + url: https://example.com + +projects: + - name: "Job Tailor" + url: https://example.com/ + affiliation: Open University + startDate: 2020-11-01 + endDate: 2021-04-30 + highlights: + - Created an AI-powered resume editor application that allowed users to easily create different resumes and cover letters specifically tailored to and customized for individual job descriptions based on their personal information in their complete curriculum vitae. + - Acquired more than 100,000 user sign ups in 3 months and more than 10,000 active monthly users in its lifetime before being sold to investors. + - Generated profit of upwards \$20,000 yearly with a team of only four developers and three business operatives + +skills: + - category: Soft Skills + skills: + - Public Speaking + - Debating + - Communication + - Critical Thinking + - Leadership + - Persuasive Writing + - Technical Writing + - category: Programming + skills: + - Python + - SQL, PostgreSQL + - MATLAB/Octave + - HTML + - CSS + - Javascript + - Typst + - LaTeX + - category: Tools + skills: + - Microsoft Word + - Git + - Docker + - Visual Studio Code + - Canva + - category: Web Development + skills: + - React + - Next.js + - million.js + - Svelte & Sveltekit + - Tailwind CSS + - Node.js + - Deno + - FastAPI + - Flask + - category: BI & Data Analytics + skills: + - Microsoft Excel + - Microsoft Power BI + - Jupyter Notebook + - Numpy + - Pandas + - Plotly + - Altair + +languages: + - language: English + fluency: Native speaker + - language: German + fluency: Native speaker + - language: Japanese + fluency: Basic proficiency + +interests: + - Video Games + - Anime + - Reading Non-fiction + - Classical and Original Soundtrack Music + +references: + # You can comment out the entries below if you don't have any references + # The same goes for the publications + + - name: Dr. Jane Austin + reference: John was a great student. He was always eager to learn new things and was very passionate about his studies. As his mentor, I am proud to say that he was also a great leader and was able to lead his team to victory in the 2020 SCG Bangkok Business Challenge Global Competition. + url: https://janeaustin.com \ No newline at end of file diff --git a/main.typ b/main.typ new file mode 100644 index 0000000..35f8960 --- /dev/null +++ b/main.typ @@ -0,0 +1,48 @@ +#import "cv/cv.typ": * + +#let language = "en" + +#let cvdata = ( + personal: yaml(("data/", language, "/personal.yaml").join()), + experience: yaml(("data/", language, "/experience.yaml").join()), + education: yaml(("data/", language, "/education.yaml").join()), + skills: yaml(("data/", language, "/skills.yaml").join()) +) + +#let uservars = ( + headingfont: "Roboto", + bodyfont: "Roboto", + fontsize: 10pt, // 10pt, 11pt, 12pt + linespacing: 6pt, + showAddress: true, // true/false show address in contact info + showNumber: true, // true/false show phone number in contact info + headingsmallcaps: false +) + +#let customrules(doc) = { + // add custom document style rules here + set page( + paper: "a4", // a4, us-letter + // numbering: "1 / 1", + number-align: center, // left, center, right + margin: 1.25cm, // 1.25cm, 1.87cm, 2.5cm + ) + + doc +} + +#let cvinit(doc) = { + doc = setrules(uservars, doc) + doc = showrules(uservars, doc) + doc = customrules(doc) + + doc +} + +#show: doc => cvinit(doc) + +#cvheading(cvdata, uservars) +#cvwork(cvdata) +// #cveducation(cvdata) +// #cvskills(cvdata) +#endnote() \ No newline at end of file