// Based on https://github.com/stuxf/basic-typst-resume-template #import "@preview/basic-resume:0.2.9": * #let resumeData = json("resume.json") #let i18nData = json("../../i18n/locales/en.json") #let privateData = json("../../private/data.json") #let projects = json("projects.json"); #let tool-chip(t) = link(t.link)[#t.name] #let tool-list(tools) = tools.map(tool-chip).join(", ") #let name = i18nData.website.name #let location = privateData.location #let email = privateData.email #let github = "github.com/phundrak" #let gitea = "labs.phundrak.com/phundrak" #let linkedin = "linkedin.com/in/lucien-cartier-tilet/" #let phone = privateData.phone #let personal-site = "phundrak.com" // dates: dates-helper(start-date: "Jan 2021", end-date: "Present"), #let time-period(dates) = { let end = dates.at("end", default: none); if end == none { [Since #dates.start] } else { dates-helper(start-date: dates.start, end-date: end) } } #show: resume.with( author: name, location: location, email: email, github: github, linkedin: linkedin, phone: phone, personal-site: personal-site, accent-color: "#5e81ac", font: "New Computer Modern", paper: "a4", author-position: left, personal-info-position: left, ) /* * Lines that start with == are formatted into section headings * You can use the specific formatting functions if needed * The following formatting functions are listed below * #edu(dates: "", degree: "", gpa: "", institution: "", location: "", consistent: false) * #work(company: "", dates: "", location: "", title: "") * #project(dates: "", name: "", role: "", url: "") * certificates(name: "", issuer: "", url: "", date: "") * #extracurriculars(activity: "", dates: "") * There are also the following generic functions that don't apply any formatting * #generic-two-by-two(top-left: "", top-right: "", bottom-left: "", bottom-right: "") * #generic-one-by-two(left: "", right: "") */ == Work Experience #for e in resumeData.experience [ #work( title: e.title, company: e.company, dates: time-period(e.dates) ) #if e.description != "" [ #par(e.description) ] #if "tools" in e and e.tools.len() > 0 [ #par(text(size: 9pt, fill: gray)[#tool-list(e.tools)]) ] ] == Technical Skills - *Programming Languages*: #tool-list(resumeData.programmingLanguages) - *Frameworks*: #tool-list(resumeData.frameworks) - *Operating Systems*: #tool-list(resumeData.os) - *Devops Technologies*: #tool-list(resumeData.devops) - *Other Tools*: #tool-list(resumeData.otherTools) == Education #for e in resumeData.education [ #edu( institution: e.institution, location: e.location, dates: time-period(e.dates), degree: e.degree, ) #if e.description != "" [ #par(e.description) ] ] == Projects #for p in projects.projects [ #project( name: p.name, role: p.role, url: p.links.at(0).url, dates: time-period(p.dates) ) #par(p.description) ] == Extracurricular Activities #extracurriculars( activity: "Conlanging", dates: time-period((start: "2016")), ) Artificial language creation / Eittlandic: a sister language to the Nordic languages like Norwegian or Icelandic. - #link("https://conlang.phundrak.com/eittlandic")[conlang.phundrak.com/eittlandic] - Naturalistic language - Evolved from theorized Early Old Norse (an in-between of Proto-Norse and Old Norse) / Proto-Ñyqy: a language made as the root language of the Ñyqy language family in a fictional setting. - #link("https://conlang.phundrak.com/proto-nyqy")[conlang.phundrak.com/proto-nyqy] - Relatively simple grammar - Base for several related languages and sub-families, like the Mojhal languages (currently under construction) / Zikãti: Experimental language focused on vocabulary generation - #link("https://conlang.phundrak.com/zik%C3%A3ti")[conlang.phundrak.com/zikãti] - Vocabulary based on few root words for generic concepts, expanded with prefixes and suffixes