#import "@preview/fontawesome:0.1.0": * #let process_colors(colors: (:)) = { if colors.at("base", default: none) == none { colors.insert("base", rgb("#b00b69")) } if colors.at("light", default: none) == none { colors.insert("light", colors.base.lighten(35%)) } if colors.at("lighter", default: none) == none { colors.insert("lighter", colors.base.lighten(70%)) } if colors.at("dark", default: none) == none { colors.insert("dark", colors.base.darken(35%)) } if colors.at("darker", default: none) == none { 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%)) c.insert("page_background", white) return c } #let default_style = ( left_col_size: 33%, col_gap: 8mm, line_height: 0.5mm, page: ( paper: "a4", margin: 1cm, ), size: ( h1: 36pt, h2: 14pt, base: 10pt, small: 9pt, ), exp_bar: ( height: 3mm, width: 32mm, corner_radius: 1mm, bar_offset: -0.5mm, subtext_offset: -2mm, ), colors: _default_colors(), ) #let lenk(to, where) = [ #link(to)[#fa-link() #where] ] #let base_layout( style: default_style, header, left, right, ) = { [#header] grid( columns: (style.left_col_size, 1fr), gutter: style.col_gap, [#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 exp_bar( style: default_style, filled, body ) = { box( // load bearing box :upside_down_face: grid( columns: (1fr, auto), [#body], { v(style.exp_bar.bar_offset) box( width: style.exp_bar.width, height: style.exp_bar.height, fill: style.colors.lighter, radius: style.exp_bar.corner_radius, box( width: filled, height: style.exp_bar.height, fill: style.colors.base, radius: style.exp_bar.corner_radius, ) ) } ) ) } #let machine_reading_keyword_dump = [ // 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])) }