|
|
|
#import "typst-fontawesome/fontawesome.typ": *
|
|
|
|
#import "self.typ"
|
|
|
|
|
|
|
|
#set page("a4", margin: 1cm)
|
|
|
|
#set text(
|
|
|
|
font: ("Inter", "Noto Color Emoji"),
|
|
|
|
size: 10pt)
|
|
|
|
#let accent_color = rgb("#B00B69")
|
|
|
|
#let colors = (
|
|
|
|
accent: rgb("#b00b69"),
|
|
|
|
muted: rgb("#af4682"),
|
|
|
|
dark: rgb("#353133"),
|
|
|
|
mid: rgb("#635e61"),
|
|
|
|
light: rgb("#d8d0d4"),
|
|
|
|
)
|
|
|
|
|
|
|
|
#set text(fill: colors.dark)
|
|
|
|
#show heading: it => {
|
|
|
|
set text(fill: black)
|
|
|
|
it
|
|
|
|
}
|
|
|
|
#show heading.where(level: 2): it => {
|
|
|
|
it
|
|
|
|
v(-8pt)
|
|
|
|
line(length: 100%, stroke: 2pt + colors.muted)
|
|
|
|
}
|
|
|
|
|
|
|
|
#let accent(body, fill: accent_color) = {
|
|
|
|
text(fill)[#body]
|
|
|
|
}
|
|
|
|
#let skillbox(percent) = {
|
|
|
|
v(-2pt)
|
|
|
|
rect(width: 100%, fill: colors.light, inset: 0pt, height: 10pt, radius: 3pt)[#rect(width: percent, fill: accent_color, radius: 3pt)]
|
|
|
|
}
|
|
|
|
#let skill(desc: none, name, percent) = {
|
|
|
|
grid(
|
|
|
|
columns: (1fr, 2cm),
|
|
|
|
[*#name*],
|
|
|
|
skillbox(percent)
|
|
|
|
)
|
|
|
|
if desc != none {
|
|
|
|
v(-8pt)
|
|
|
|
text(size: 8pt)[#desc]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#let work_item(
|
|
|
|
ref: none,
|
|
|
|
time: none,
|
|
|
|
location: none,
|
|
|
|
title: none,
|
|
|
|
) = {
|
|
|
|
[=== #title]
|
|
|
|
if ref != none {
|
|
|
|
|
|
|
|
}
|
|
|
|
grid(
|
|
|
|
columns: (1fr, auto),
|
|
|
|
[=== #title],
|
|
|
|
ref
|
|
|
|
)
|
|
|
|
grid(
|
|
|
|
columns: (1fr, 1fr),
|
|
|
|
{
|
|
|
|
if time != none [
|
|
|
|
#fa-calendar-alt() #time
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
if location != none [
|
|
|
|
#fa-map-marker-alt() #location
|
|
|
|
]
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
#let meta_item(icon, body) = {
|
|
|
|
accent()[#icon]
|
|
|
|
h(5pt)
|
|
|
|
text(size: 9pt, baseline: -2pt, fill: colors.mid)[*#body*]
|
|
|
|
}
|
|
|
|
|
|
|
|
#let meta_items = (
|
|
|
|
(fa-at(), self.email),
|
|
|
|
(fa-id-card(), [they/them]),
|
|
|
|
(fa-map-marker-alt(), [Germany])
|
|
|
|
)
|
|
|
|
|
|
|
|
#let machine_reading_keyword_dump = [ // the future we live in... this actually does help and i hate that
|
|
|
|
// based in part on the stackoverflow dev survey
|
|
|
|
Rust, Python, Nix, JS, CSS, HTML, Web, Desktop, Embedded, Scalable, Server, Service, SAAS, Network, Administration,
|
|
|
|
Java, Backend, High performance Async, Serverless, React, NextJS, Scala, Erlang, Haskell, COBOL, Kubernetes, K8s, k3s,
|
|
|
|
Docker, Podman, Ansible, Terraform, Container, .NET, C\#, PHP, MySQL, Nginx, Apache, Database, SQLite, SQL, NoSQL,
|
|
|
|
MongoDB, npm, yarn, Unity, Unreal, Elixir, Clojure, TypeScript, Go, Kotlin, Swift, Dart, Bash, Ruby, C++, Lua,
|
|
|
|
Fortran, Assembly, Redis, Elasticsearch, Firebase, AWS, OVH, GCP, OpenStack, OpenShift, Phoenix, Svelte, Deno,
|
|
|
|
ASP.NET, FastAPI, Node.js, Django, Laravel, Flask, jQuery, Flutter, Keras, NumPy, Spring, React Native, Electron,
|
|
|
|
Git, CI/CD, DevOps, Observability, Grafana, Prometheus, OpenTelemetry, OTel, Microservice, debugging, gdb
|
|
|
|
]
|
|
|
|
|
|
|
|
#let section_skills = [
|
|
|
|
#set text(size: 9pt)
|
|
|
|
== Skills
|
|
|
|
//I am confident in my skills with: \
|
|
|
|
//- *Rust*—my current favorite language, which I picked up in 2020 and used for anything from embedded development to web backends or network proxies
|
|
|
|
//- *Python*—my first major language which i've used since 2012, sometimes interleaving with C (and recently Rust) for performance critical code
|
|
|
|
//- *PCB EDA tools*—designing digital circuits from component choice to finished boards, specifically using kicad
|
|
|
|
//- *Hardware design*—primarily using 3d printing and other maker accessible techniques
|
|
|
|
|
|
|
|
//Additionally, I have used and am somewhat fluent with: \
|
|
|
|
//- *Programming languages:* C, Java
|
|
|
|
//- *Web languages:* HTML, CSS, JS, Sass
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
#let section_natlang = [
|
|
|
|
== Natural Languages
|
|
|
|
#skill("English", 100%, desc: [Native Language])
|
|
|
|
#skill("German", 100%, desc: [Native Language])
|
|
|
|
#skill("Spanish", 20%, desc: [
|
|
|
|
Studied in school \
|
|
|
|
Self assessment: *A2*
|
|
|
|
])
|
|
|
|
]
|
|
|
|
|
|
|
|
#let section_competitions = [
|
|
|
|
== Competitions
|
|
|
|
#accent[#link("https://codingcontest.org")[*codingcontest.org*]]
|
|
|
|
|
|
|
|
#fa-calendar-alt() 2019-11-08
|
|
|
|
|
|
|
|
#set text(size: 9pt)
|
|
|
|
Worldwide level-based coding game.
|
|
|
|
- University of Salzburg: *1#super[st]* place
|
|
|
|
- Worldwide: *47#super[th]* place
|
|
|
|
]
|
|
|
|
|
|
|
|
#let section_work = [
|
|
|
|
== Work
|
|
|
|
#work_item(
|
|
|
|
ref: accent[#link("https://rami.io")[rami.io]],
|
|
|
|
title: "Software Engineer",
|
|
|
|
time: "2020 - 2021",
|
|
|
|
location: "Remote"
|
|
|
|
)
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
#let section_exp = []
|
|
|
|
|
|
|
|
// start layouting
|
|
|
|
|
|
|
|
#place(top + right, hide[#machine_reading_keyword_dump])
|
|
|
|
|
|
|
|
#text(size: 18pt)[= #upper(self.name)]
|
|
|
|
#v(-4pt)
|
|
|
|
#accent()[*#self.tagline*]
|
|
|
|
|
|
|
|
#meta_items.map(
|
|
|
|
((icon, body)) => meta_item(icon)[#body]
|
|
|
|
).join(h(1cm))
|
|
|
|
|
|
|
|
#show link: it => [
|
|
|
|
#fa-link() #it
|
|
|
|
]
|
|
|
|
|
|
|
|
#grid(
|
|
|
|
columns: (58mm, 1fr),
|
|
|
|
rows: auto,
|
|
|
|
gutter: 16pt,
|
|
|
|
[
|
|
|
|
#section_skills
|
|
|
|
|
|
|
|
|
|
|
|
#section_natlang
|
|
|
|
|
|
|
|
#section_competitions
|
|
|
|
],
|
|
|
|
[
|
|
|
|
#section_work
|
|
|
|
|
|
|
|
#section_exp
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|