xenua
1 year ago
9 changed files with 360 additions and 144 deletions
@ -1,35 +1,99 @@ |
|||||||
#import "@preview/fontawesome:0.1.0" |
#import "@preview/fontawesome:0.1.0": * |
||||||
|
|
||||||
#let process_colors(colors) = { |
#let process_colors(colors: (:)) = { |
||||||
if colors.at("base", none) == none { |
if colors.at("base", default: none) == none { |
||||||
colors.insert("base", rgb(#b00b69)) |
colors.insert("base", rgb("#b00b69")) |
||||||
} |
} |
||||||
if colors.at("light", none) == none { |
if colors.at("light", default: none) == none { |
||||||
colors.insert("light", colors.base.lighten(35%)) |
colors.insert("light", colors.base.lighten(35%)) |
||||||
} |
} |
||||||
if colors.at("lighter", none) == none { |
if colors.at("lighter", default: none) == none { |
||||||
colors.insert("lighter", colors.base.lighten(70%)) |
colors.insert("lighter", colors.base.lighten(70%)) |
||||||
} |
} |
||||||
if colors.at("dark", none) == none { |
if colors.at("dark", default: none) == none { |
||||||
colors.insert("dark", colors.base.darken(35%)) |
colors.insert("dark", colors.base.darken(35%)) |
||||||
} |
} |
||||||
if colors.at("darker", none) == none { |
if colors.at("darker", default: none) == none { |
||||||
colors.insert("darker", colors.base.darken(70%)) |
colors.insert("darker", colors.base.darken(70%)) |
||||||
} |
} |
||||||
|
|
||||||
|
return colors |
||||||
|
} |
||||||
|
|
||||||
|
#let _default_colors() = { |
||||||
|
let c = process_colors() |
||||||
|
let textc = rgb("#281f24") |
||||||
|
c.insert("text", textc) |
||||||
|
c.insert("heading", textc.darken(50%)) |
||||||
|
c.insert("text_lighter", textc.lighten(25%)) |
||||||
|
return c |
||||||
} |
} |
||||||
|
|
||||||
#let cv( |
#let default_style = ( |
||||||
colors: {}, |
left_col_size: 33%, |
||||||
self, |
col_gap: 8mm, |
||||||
left_col, |
line_height: 0.5mm, |
||||||
right_col, |
page: ( |
||||||
|
paper: "a4", |
||||||
|
margin: 1cm, |
||||||
|
), |
||||||
|
size: ( |
||||||
|
h1: 36pt, |
||||||
|
h2: 12pt, |
||||||
|
base: 10pt, |
||||||
|
small: 9pt, |
||||||
|
), |
||||||
|
colors: _default_colors(), |
||||||
|
) |
||||||
|
|
||||||
|
#let lenk(to, where) = [ |
||||||
|
#link(to)[#fa-link() #where] |
||||||
|
] |
||||||
|
|
||||||
|
#let base_layout( |
||||||
|
style, |
||||||
|
header, |
||||||
|
left, |
||||||
|
right, |
||||||
) = { |
) = { |
||||||
process_colors(colors) |
[#header] |
||||||
set page("a4", margin: 1cm) |
grid( |
||||||
set text( |
columns: (style.left_col_size, 1fr), |
||||||
font: "Inter", |
gutter: style.col_gap, |
||||||
size: 10pt |
[#left], [#right] |
||||||
) |
) |
||||||
|
} |
||||||
|
|
||||||
|
#let work_item( |
||||||
|
style: default_style, |
||||||
|
ref: none, |
||||||
|
time: none, |
||||||
|
location: none, |
||||||
|
title: none, |
||||||
|
) = { |
||||||
|
stack( |
||||||
|
dir: ltr, |
||||||
|
spacing: 2mm, |
||||||
|
[=== #title], |
||||||
|
text(fill: style.colors.text_lighter, size: style.size.small)[#time, #location] |
||||||
|
) |
||||||
|
if ref != none { |
||||||
|
v(-2mm) |
||||||
|
ref |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
#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 put_keyword_dump_in_there() = { |
||||||
|
place(top + left, hide([#machine_reading_keyword_dump])) |
||||||
} |
} |
Binary file not shown.
@ -0,0 +1,22 @@ |
|||||||
|
#import "xenua_cv.typ": xenua_cv, xenua_style |
||||||
|
#import "cv.typ": work_item, lenk |
||||||
|
#import "self.typ" |
||||||
|
|
||||||
|
#xenua_cv( |
||||||
|
self, |
||||||
|
[ |
||||||
|
== left content |
||||||
|
foo bar meow |
||||||
|
], |
||||||
|
[ |
||||||
|
== right content |
||||||
|
hellfire r9x missile doesn't know where it is, someone sabotaged it |
||||||
|
|
||||||
|
#work_item(style: xenua_style, |
||||||
|
title: "Software Engineer", |
||||||
|
time: "2020 - 2021", |
||||||
|
location: "Remote", |
||||||
|
ref: lenk("https://rami.io")[rami.io], |
||||||
|
) |
||||||
|
], |
||||||
|
) |
Binary file not shown.
@ -1,5 +1,14 @@ |
|||||||
|
#import "@preview/fontawesome:0.1.0": * |
||||||
|
|
||||||
#let name = [Julia Luna] |
#let name = [Julia Luna] |
||||||
|
|
||||||
#let tagline = [Software engineer, embedded developer] |
#let tagline = [Software engineer, embedded developer] |
||||||
|
|
||||||
#let email = link("mailto:me@julialuna.dev") |
#let email = link("mailto:me@julialuna.dev") |
||||||
|
|
||||||
|
#let meta = ( |
||||||
|
(fa-at(), email), |
||||||
|
(fa-id-card(), [they/them]), |
||||||
|
(fa-map-marker-alt(), [Germany]), |
||||||
|
([*\[#h(-1pt)m#h(-1pt)\]*], link("https://matrix.to/#/@julialuna:finallycoffee.eu")[\@julialuna:finallycoffee.eu]) |
||||||
|
) |
||||||
|
Binary file not shown.
@ -0,0 +1,79 @@ |
|||||||
|
#import "@preview/fontawesome:0.1.0": * |
||||||
|
|
||||||
|
#import "cv.typ": base_layout, put_keyword_dump_in_there, default_style, lenk |
||||||
|
|
||||||
|
#let xenua_style = default_style |
||||||
|
#xenua_style.insert("confidential", true) |
||||||
|
|
||||||
|
#let xenua_cv( |
||||||
|
style: xenua_style, |
||||||
|
self, |
||||||
|
lcol, rcol, |
||||||
|
) = { |
||||||
|
set page( |
||||||
|
style.page.paper, |
||||||
|
margin: style.page.margin, |
||||||
|
background: if style.confidential { |
||||||
|
rotate(60deg, text(112pt, fill: rgb("FFDCD5"))[ |
||||||
|
*CONFIDENTIAL* |
||||||
|
])} else {none} |
||||||
|
) |
||||||
|
set text( |
||||||
|
font: "Inter", |
||||||
|
size: style.size.base, |
||||||
|
fill: style.colors.text |
||||||
|
) |
||||||
|
show heading: it => { |
||||||
|
set text(fill: style.colors.heading) |
||||||
|
it |
||||||
|
} |
||||||
|
show heading.where(level: 1): it => { |
||||||
|
set text(size: style.size.h1) |
||||||
|
it |
||||||
|
} |
||||||
|
show heading.where(level: 2): it => { |
||||||
|
set text(size: style.size.h2) |
||||||
|
upper(it) |
||||||
|
v(-4mm) |
||||||
|
line(length: 100%, stroke: style.line_height + style.colors.light) |
||||||
|
} |
||||||
|
|
||||||
|
put_keyword_dump_in_there() |
||||||
|
|
||||||
|
let header = { |
||||||
|
grid( |
||||||
|
columns: (1fr, auto), |
||||||
|
[ |
||||||
|
= #self.name |
||||||
|
#v(-2mm) |
||||||
|
#text(fill: style.colors.base)[*#self.tagline*] |
||||||
|
], |
||||||
|
[ |
||||||
|
#table( |
||||||
|
columns: 2, |
||||||
|
stroke: none, |
||||||
|
inset: 0pt, |
||||||
|
align: (center, left), |
||||||
|
row-gutter: 5pt, |
||||||
|
column-gutter: 4pt, |
||||||
|
..self.meta.map( |
||||||
|
((icon, content)) => ( |
||||||
|
[#text(fill: style.colors.base)[#icon]], |
||||||
|
[*#content*] |
||||||
|
) |
||||||
|
).flatten() |
||||||
|
) |
||||||
|
] |
||||||
|
) |
||||||
|
line(length: 100%, stroke: style.line_height + style.colors.light) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
base_layout( |
||||||
|
style, |
||||||
|
header, |
||||||
|
lcol, rcol |
||||||
|
) |
||||||
|
} |
Loading…
Reference in new issue