xenua
1 year ago
commit
6d4a579209
10 changed files with 259 additions and 0 deletions
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
[submodule "typst-fontawesome"] |
||||
path = typst-fontawesome |
||||
url = https://github.com/duskmoon314/typst-fontawesome.git |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
#import "@preview/fontawesome:0.1.0" |
||||
|
||||
#let process_colors(colors) = { |
||||
if colors.at("base", none) == none { |
||||
colors.insert("base", rgb(#b00b69)) |
||||
} |
||||
if colors.at("light", none) == none { |
||||
colors.insert("light", colors.base.lighten(35%)) |
||||
} |
||||
if colors.at("lighter", none) == none { |
||||
colors.insert("lighter", colors.base.lighten(70%)) |
||||
} |
||||
if colors.at("dark", none) == none { |
||||
colors.insert("dark", colors.base.darken(35%)) |
||||
} |
||||
if colors.at("darker", none) == none { |
||||
colors.insert("darker", colors.base.darken(70%)) |
||||
} |
||||
} |
||||
|
||||
#let cv( |
||||
colors: {}, |
||||
self, |
||||
left_col, |
||||
right_col, |
||||
|
||||
) = { |
||||
process_colors(colors) |
||||
set page("a4", margin: 1cm) |
||||
set text( |
||||
font: "Inter", |
||||
size: 10pt |
||||
) |
||||
|
||||
} |
Binary file not shown.
@ -0,0 +1,182 @@
@@ -0,0 +1,182 @@
|
||||
#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 |
||||
] |
||||
) |
||||
|
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
#let name = [Julia Luna] |
||||
|
||||
#let tagline = [Software engineer, embedded developer] |
||||
|
||||
#let email = link("mailto:me@julialuna.dev") |
Binary file not shown.
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
#let base_color = rgb("#b00b69") |
||||
|
||||
#let bc_dark = base_color.darken(35%) |
||||
#let bc_darker = base_color.darken(70%) |
||||
#let bc_light = base_color.lighten(35%) |
||||
#let bc_lighter = base_color.lighten(70%) |
||||
|
||||
#let vis(color) = { |
||||
rect(width: 3cm, height: 3cm, fill: color, stroke: 8pt + white, radius: 8pt) |
||||
} |
||||
|
||||
#let process_colors(colors) = { |
||||
if colors.at("base", none) == none { |
||||
colors.insert("base", rgb("#b00b69")) |
||||
} |
||||
if colors.at("light", none) == none { |
||||
colors.insert("light", colors.base.lighten(35%)) |
||||
} |
||||
if colors.at("lighter", none) == none { |
||||
colors.insert("lighter", colors.base.lighten(70%)) |
||||
} |
||||
if colors.at("dark", none) == none { |
||||
colors.insert("dark", colors.base.darken(35%)) |
||||
} |
||||
if colors.at("darker", none) == none { |
||||
colors.insert("darker", colors.base.darken(70%)) |
||||
} |
||||
} |
||||
|
||||
#let colors = (:) |
||||
#process_colors(colors) |
||||
|
||||
|
Loading…
Reference in new issue