Browse Source

meow

pull/1/head
xenua 1 year ago
parent
commit
3121389b98
Signed by: xenua
GPG Key ID: 8F93B68BD37255B8
  1. 104
      cv.typ
  2. BIN
      meow.pdf
  3. 22
      meow.typ
  4. BIN
      old.pdf
  5. 232
      old.typ
  6. 9
      self.typ
  7. BIN
      test.pdf
  8. 58
      test.typ
  9. 79
      xenua_cv.typ

104
cv.typ

@ -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]))
} }

BIN
meow.pdf

Binary file not shown.

22
meow.typ

@ -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],
)
],
)

BIN
old.pdf

Binary file not shown.

232
old.typ

@ -3,144 +3,144 @@
#set page("a4", margin: 1cm) #set page("a4", margin: 1cm)
#set text( #set text(
font: ("Inter", "Noto Color Emoji"), font: ("Inter", "Noto Color Emoji"),
size: 10pt) size: 10pt)
#let accent_color = rgb("#B00B69") #let accent_color = rgb("#B00B69")
#let colors = ( #let colors = (
accent: rgb("#b00b69"), accent: rgb("#b00b69"),
muted: rgb("#af4682"), muted: rgb("#af4682"),
dark: rgb("#353133"), dark: rgb("#353133"),
mid: rgb("#635e61"), mid: rgb("#635e61"),
light: rgb("#d8d0d4"), light: rgb("#d8d0d4"),
) )
#set text(fill: colors.dark) #set text(fill: colors.dark)
#show heading: it => { #show heading: it => {
set text(fill: black) set text(fill: black)
it it
} }
#show heading.where(level: 2): it => { #show heading.where(level: 2): it => {
it it
v(-8pt) v(-8pt)
line(length: 100%, stroke: 2pt + colors.muted) line(length: 100%, stroke: 2pt + colors.muted)
} }
#let accent(body, fill: accent_color) = { #let accent(body, fill: accent_color) = {
text(fill)[#body] text(fill)[#body]
} }
#let skillbox(percent) = { #let skillbox(percent) = {
v(-2pt) v(-2pt)
rect(width: 100%, fill: colors.light, inset: 0pt, height: 10pt, radius: 3pt)[#rect(width: percent, fill: accent_color, radius: 3pt)] 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) = { #let skill(desc: none, name, percent) = {
grid( grid(
columns: (1fr, 2cm), columns: (1fr, 2cm),
[*#name*], [*#name*],
skillbox(percent) skillbox(percent)
) )
if desc != none { if desc != none {
v(-8pt) v(-8pt)
text(size: 8pt)[#desc] text(size: 8pt)[#desc]
} }
} }
#let work_item( #let work_item(
ref: none, ref: none,
time: none, time: none,
location: none, location: none,
title: none, title: none,
) = { ) = {
[=== #title] [=== #title]
if ref != none { if ref != none {
} }
grid( grid(
columns: (1fr, auto), columns: (1fr, auto),
[=== #title], [=== #title],
ref ref
) )
grid( grid(
columns: (1fr, 1fr), columns: (1fr, 1fr),
{ {
if time != none [ if time != none [
#fa-calendar-alt() #time #fa-calendar-alt() #time
] ]
}, },
{ {
if location != none [ if location != none [
#fa-map-marker-alt() #location #fa-map-marker-alt() #location
] ]
} }
) )
} }
#let meta_item(icon, body) = { #let meta_item(icon, body) = {
accent()[#icon] accent()[#icon]
h(5pt) h(5pt)
text(size: 9pt, baseline: -2pt, fill: colors.mid)[*#body*] text(size: 9pt, baseline: -2pt, fill: colors.mid)[*#body*]
} }
#let meta_items = ( #let meta_items = (
(fa-at(), self.email), (fa-at(), self.email),
(fa-id-card(), [they/them]), (fa-id-card(), [they/them]),
(fa-map-marker-alt(), [Germany]) (fa-map-marker-alt(), [Germany])
) )
#let machine_reading_keyword_dump = [ // the future we live in... this actually does help and i hate that #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 // based in part on the stackoverflow dev survey
Rust, Python, Nix, JS, CSS, HTML, Web, Desktop, Embedded, Scalable, Server, Service, SAAS, Network, Administration, 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, 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, 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, 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, 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, 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 Git, CI/CD, DevOps, Observability, Grafana, Prometheus, OpenTelemetry, OTel, Microservice, debugging, gdb
] ]
#let section_skills = [ #let section_skills = [
#set text(size: 9pt) #set text(size: 9pt)
== Skills == Skills
//I am confident in my skills with: \ //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 //- *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 //- *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 //- *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 //- *Hardware design*—primarily using 3d printing and other maker accessible techniques
//Additionally, I have used and am somewhat fluent with: \ //Additionally, I have used and am somewhat fluent with: \
//- *Programming languages:* C, Java //- *Programming languages:* C, Java
//- *Web languages:* HTML, CSS, JS, Sass //- *Web languages:* HTML, CSS, JS, Sass
] ]
#let section_natlang = [ #let section_natlang = [
== Natural Languages == Natural Languages
#skill("English", 100%, desc: [Native Language]) #skill("English", 100%, desc: [Native Language])
#skill("German", 100%, desc: [Native Language]) #skill("German", 100%, desc: [Native Language])
#skill("Spanish", 20%, desc: [ #skill("Spanish", 20%, desc: [
Studied in school \ Studied in school \
Self assessment: *A2* Self assessment: *A2*
]) ])
] ]
#let section_competitions = [ #let section_competitions = [
== Competitions == Competitions
#accent[#link("https://codingcontest.org")[*codingcontest.org*]] #accent[#link("https://codingcontest.org")[*codingcontest.org*]]
#fa-calendar-alt() 2019-11-08 #fa-calendar-alt() 2019-11-08
#set text(size: 9pt) #set text(size: 9pt)
Worldwide level-based coding game. Worldwide level-based coding game.
- University of Salzburg: *1#super[st]* place - University of Salzburg: *1#super[st]* place
- Worldwide: *47#super[th]* place - Worldwide: *47#super[th]* place
] ]
#let section_work = [ #let section_work = [
== Work == Work
#work_item( #work_item(
ref: accent[#link("https://rami.io")[rami.io]], ref: accent[#link("https://rami.io")[rami.io]],
title: "Software Engineer", title: "Software Engineer",
time: "2020 - 2021", time: "2020 - 2021",
location: "Remote" location: "Remote"
) )
] ]
#let section_exp = [] #let section_exp = []
@ -154,29 +154,29 @@
#accent()[*#self.tagline*] #accent()[*#self.tagline*]
#meta_items.map( #meta_items.map(
((icon, body)) => meta_item(icon)[#body] ((icon, body)) => meta_item(icon)[#body]
).join(h(1cm)) ).join(h(1cm))
#show link: it => [ #show link: it => [
#fa-link() #it #fa-link() #it
] ]
#grid( #grid(
columns: (58mm, 1fr), columns: (58mm, 1fr),
rows: auto, rows: auto,
gutter: 16pt, gutter: 16pt,
[ [
#section_skills #section_skills
#section_natlang #section_natlang
#section_competitions #section_competitions
], ],
[ [
#section_work #section_work
#section_exp #section_exp
] ]
) )

9
self.typ

@ -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])
)

BIN
test.pdf

Binary file not shown.

58
test.typ

@ -6,28 +6,70 @@
#let bc_lighter = base_color.lighten(70%) #let bc_lighter = base_color.lighten(70%)
#let vis(color) = { #let vis(color) = {
rect(width: 3cm, height: 3cm, fill: color, stroke: 8pt + white, radius: 8pt) rect(width: 2cm, height: 2cm, fill: color, stroke: 8pt + white, radius: 8pt)
} }
#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 colors = (:) #let variations = (
#process_colors(colors) "#b00b69",
"#b0690b",
"#69b00b",
"#690bb0",
"#0b69b0",
"#0bb069",
"#c0ffee",
"#c0eeff",
"#ffc0ee",
"#ffeec0",
"#eeffc0",
"#eec0ff",
"#69c0ff",
"#69ffc0",
"#c0693e",
)
#let owo(colors) = [
#vis(colors.at("lighter"))
#vis(colors.at("light"))
#vis(colors.at("base"))
#vis(colors.at("dark"))
#vis(colors.at("darker"))
]
#let meowmeow = ()
#for var in variations {
meowmeow.push([
= #var
#owo(process_colors(("base": rgb(var))))
])}
#set page(
width: 60cm,
height: 18cm,
)
#stack(
dir: ltr,
..meowmeow
)

79
xenua_cv.typ

@ -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…
Cancel
Save