From dcd46d5f7a0ca07185e75174fe12f57dbf549d60 Mon Sep 17 00:00:00 2001 From: Michael Clemens Date: Thu, 3 Feb 2022 12:13:05 +0100 Subject: [PATCH] initial commit --- .gitignore | 1 + .gitmodules | 3 + .hugo_build.lock | 0 archetypes/default.md | 6 + assets/css/_base.scss | 38 +++++ assets/css/_layout.scss | 159 ++++++++++++++++++ assets/css/_section.scss | 101 +++++++++++ config.yaml | 101 +++++++++++ data/education.yaml | 7 + data/experience.yaml | 49 ++++++ data/features.yaml | 79 +++++++++ data/projects.yaml | 69 ++++++++ data/publications.yaml | 26 +++ public | 1 + ...s_48b060fe05b0a273d182ef83c0605941.content | 1 + ...scss_48b060fe05b0a273d182ef83c0605941.json | 1 + ...s_48b060fe05b0a273d182ef83c0605941.content | 1 + ...scss_48b060fe05b0a273d182ef83c0605941.json | 1 + static/avatar.jpg | Bin 0 -> 14435 bytes themes/resume-a4 | 1 + 20 files changed, 645 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .hugo_build.lock create mode 100644 archetypes/default.md create mode 100644 assets/css/_base.scss create mode 100644 assets/css/_layout.scss create mode 100644 assets/css/_section.scss create mode 100644 config.yaml create mode 100644 data/education.yaml create mode 100644 data/experience.yaml create mode 100644 data/features.yaml create mode 100644 data/projects.yaml create mode 100644 data/publications.yaml create mode 120000 public create mode 100644 resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content create mode 100644 resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json create mode 100644 resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content create mode 100644 resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json create mode 100644 static/avatar.jpg create mode 160000 themes/resume-a4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46f5006 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +public/* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ab9dea0 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/resume-a4"] + path = themes/resume-a4 + url = https://gitlab.com/mertbakir/resume-a4.git diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/assets/css/_base.scss b/assets/css/_base.scss new file mode 100644 index 0000000..d51c699 --- /dev/null +++ b/assets/css/_base.scss @@ -0,0 +1,38 @@ +* { + margin: 0; + padding: 0; +} + +body { + background: #fff; + color: $text-color; + font-family: $font-1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + text-decoration: underline; + color: $text-color; + + i { + padding: 0 0.2rem 0 0.25rem; + } + + &:hover { + text-decoration: underline; + color: red; + } + + &:not(.no-external-icon)::after { + content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==); + margin: 0 0.2rem 0 0.25rem; + } +} + +li { + list-style-type: square; + padding-left: 0px; + list-style-position: inside; + margin: 0.5rem 0; +} diff --git a/assets/css/_layout.scss b/assets/css/_layout.scss new file mode 100644 index 0000000..2941c1b --- /dev/null +++ b/assets/css/_layout.scss @@ -0,0 +1,159 @@ +.paper { + position: relative; + margin: 0.5rem auto; + padding: 0.45in 0.5in; + width: 210mm; + height: 297mm; + background-color: #fff; + -webkit-box-shadow: 0.2rem 0.2rem 0.6rem #aaa; + -moz-box-shadow: 0.2rem 0.2rem 0.6rem #aaa; + box-shadow: 0.2rem 0.2rem 0.6rem #aaa; + box-sizing: border-box; + + font-size: 0.88rem; + + h1, h2, h3 { + line-height: 1.2; + } + + h1 { + margin-bottom: 0.8rem; + font-size: 1.5rem; + } + + h2 { + margin-bottom: 0.4rem; + font-size: 1.1rem; + } + + h3 { + margin-bottom: 0.2rem; + font-size: 1rem; + } + + p { + margin: 0.5rem 0; + font-size: 0.88rem; + line-height: 1.5; + text-align: justify; + } + + > *:first-child { + margin-top: 0; + } +} + +main.paper { + margin-top: 2.5rem; + padding-top: 0; + + .grid { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: repeat(7, 1fr); + grid-template-rows: repeat(6, 1fr); + grid-column-gap: 0; + grid-row-gap: 0; + + .flex-row { + display: flex; + flex-direction: row; + justify-content: space-between; + } + } + + header { + grid-area: 1 / 1 / 2 / 8; + border-bottom: $border-color 0.05rem solid; + height: 12.75rem; + + .title { + display: flex; + flex-direction: column; + justify-content: center; + font-family: $font-1; + + h1 { + margin-bottom: 0.4rem; + font-size: 2.5rem; + color: $text-color; + letter-spacing: 0.15rem; + text-transform: uppercase; + } + + h2 { + margin-bottom: 0.3rem; + font-size: 1rem; + } + } + + .avatar { + display: block; + margin: 1rem auto; + padding: 1rem; + object-fit: cover; + height: 8.75rem; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + } + + a i { + padding: 0; + } + } + + .left-column, .right-column { + margin-top: 0.75rem; + + > *:first-child, + > *:first-child > *:first-child { + margin-top: 0; + } + } + + .left-column { + grid-area: 2 / 1 / 7 / 6; + display: flex; + flex-direction: column; + justify-content: flex-start; + border-right: $border-color 0.05rem solid; + padding-right: 1rem; + } + + .right-column { + grid-area: 2 / 6 / 7 / 8; + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-left: 0.5rem; + + li { + list-style-type: none; + padding: 0; + } + + h1 { + margin-bottom: 0.5rem; + font-size: 1.2rem; + } + + h2 { + margin-bottom: 0.2rem; + font-size: 1rem; + } + + h3 { + margin-bottom: 0.1rem; + font-size: 0.8rem; + } + + p { + font-size: 0.8rem; + line-height: 1.3; + } + } +} diff --git a/assets/css/_section.scss b/assets/css/_section.scss new file mode 100644 index 0000000..c122362 --- /dev/null +++ b/assets/css/_section.scss @@ -0,0 +1,101 @@ +.section { + margin-bottom: 1.5rem; + + > *:last-child { + margin-bottom: 0; + } + + .right-column & { + margin-bottom: 1rem; + } +} + +.section-title { + border-left: solid 0.35rem $text-color; + padding-left: 0.4rem; + font-family: $font-1; +} + +.item { + margin-bottom: 0.6rem; + + dl { + dt { + display: inline; + font-weight: 600; + + &::after { + content: ': ' + } + } + + dd { + display: inline; + + &:not(:last-child)::after { + content: ""; + display: block; + margin-bottom: 0.4em; + } + + *:not(:last-child)::after { + content: "; "; + margin-right: 0.25rem; + } + + } + } + + &.group { + .item { + margin-top: 0; + } + } +} + +.item-title { + font-weight: 600; + margin-bottom: 2px; +} + +.item-info { + font-weight: 400; + font-size: 12px; +} + +.job-title { + font-size: 14px; + font-weight: bold; +} + +.date { + color: scale-color($text-color, $lightness: 30%); +} + +main.paper .right-column, +main.paper .left-column, +.paper { + .section-education { + h2 { + margin-bottom: 0; + font-size: 1rem; + } + } + + .section-languages { + .item { + margin-bottom: 0.4rem; + } + + h2 { + margin-bottom: 0.1rem; + font-size: 0.9rem; + line-height: 1.1; + + span { + font-weight: 400; + font-size: 0.8rem; + } + } + } +} diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..7faf9e8 --- /dev/null +++ b/config.yaml @@ -0,0 +1,101 @@ +baseURL: "/resume" +languageCode: "en-us" +title: "Resume | Michael Clemens" +disableKinds: ["taxonomy", "term", "page", "section", "RSS", "sitemap", "robotsTXT", "404"] +theme: "resume-a4" + +# Construct main column, side column and additional page from features +# Every column and page may include any features. Some features are +# created using generic widgets and you can add easily new features, +# as long as an existing widget can render it as you like. +# +# Common keys: +# feature: name of the feature. For generic features, this is also the root key in the yaml file. +# title: string rendered as the header of the element. Can be disabled with an empty string. +# collection: the base name of the yaml file containing the data. Defaults to "features". +# widget: `layout/partials/section-.html` used to render this element. +# +# Common widgets: +# +# details-list: +# Used by default, if section-.html doesn't exists. +# +# Expects data in format (in yaml file): +# title: the title string +# subtitle: string rendered under title. E.g., company for projects, certificate authority etc. +# date: date string, e.g., when a certificate was given +# details: a text in markdown. +# link: url where the title will link to +# links: list of links rendered as a bullet list below details +# prefix: a string before the link +# title: a string inside the link +# url: the destination of the link +# icon: the icon string, e.g., "fas fa-cloud". rendered inside link and after title. +# +# word-list: +# Handy for skills and interests etc. +# +# Additional keys: +# style: Rendering style for word list. One of: list, compact, or title-list +# +# Expects data in format (in yaml file): +# A list of strings, if style is "list", or +# +# A list of: +# groupName: title of the group +# list: list of strings rendered under the group + +params: + useFontAwesome: true + css: + - custom.scss + header: + avatar: avatar.jpg + contact: true + tagline: true + links: true + side: + - feature: languages + - feature: skills + widget: word-list + style: title-list # list, compact, title-list + - feature: education + - feature: interests + widget: word-list + style: list + pages: + - features: + #- feature: about + # title: About Me + - feature: experience + - features: + - feature: projects + collection: projects + - feature: publications + title: Publications / Mentions + style: IEEE # IEEE, APA, else + #- feature: awards + #- feature: certificates + # title: Certifications + #- feature: interests + # widget: word-list + # style: list + + footer: + show: true + credits: false + footnote: >- + You can print this resume in A4 size or save as pdf. | Last update on 2022-02-01. + links: + #- prefix: Contact me on + # title: Linkedin + # url: 'https://www.linkedin.com/in/m-clemens/' + # icon: fab fa-linkedin + #- prefix: Check out my + # title: Website + # url: 'https://qrz.is' + # icon: fas fa-globe + - prefix: + title: Impress + url: 'https://qrz.is/impressum' + icon: fas fa-globe diff --git a/data/education.yaml b/data/education.yaml new file mode 100644 index 0000000..5412111 --- /dev/null +++ b/data/education.yaml @@ -0,0 +1,7 @@ +- name: "Fachinformatiker" + university: "epos consulting & software GmbH, Neckarsulm" + date: "09/2000 - 03/2004" + +- name: "Abitur" + university: "Technisches Gymnasium Heilbronn" + date: "09/1996 - 06/1999" diff --git a/data/experience.yaml b/data/experience.yaml new file mode 100644 index 0000000..885083b --- /dev/null +++ b/data/experience.yaml @@ -0,0 +1,49 @@ +- company: Schwarz IT KG, Neckarsulm + roles: + - role: Information Security Analyst + details: "- Incident handling and analysis\n + - Threat Intelligence Management" + date: "09/2020 - Present" + + - role: Information Security Engineer + details: "- Development and operation of the Qualys vulnerability scanner\n + - Inhouse consulting on information security-related issues\n + - Support of the departments in risk assessment\n + - Technical support of the Information Security Officers\n + - Development of hardening guidelines" + date: "09/2018 - 08/2020" + +- company: Fujitsu TDS GmbH, Neckarsulm + roles: + - role: IT-Security Engineer + details: "- Operation and further development of the SIEM solution\n + - Forensic analysis\n + - Operation of the vulnerability scanner" + date: "01/2017 - 08/2018" + +- company: Bürkert Werke GmbH, Ingelfingen + roles: + - role: Senior Information Security Administrator + details: "- Conception of an information security awareness campaign\n + - Evaluation of new IT security guidelines, measures and products\n + - Operation of IT security products" + date: "01/2016 - 12/2016" + +- company: Cirosec GmbH, Heilbronn + roles: + - role: Information Security Consultant + details: "- Penetration testing (web apps, Windows systems, networks)\n + - Conduction of configuration assessments (OS, application servers, VPN)\n + - Development of hardening policies (OS, applications servers, VPN)\n + - Conduction of conceptual analyses\n + - Development and conduction of security trainings" + date: "03/2011 - 12/2015" + +- company: dsb AG, Neckarsulm + roles: + - role: System and Database Administrator + details: "- System administrator IBM AIX\n + - Database administrator ADABAS C and DB2\n + - Backup administrator Tivoli Storage Manager" + date: "11/2004 - 02/2011" + diff --git a/data/features.yaml b/data/features.yaml new file mode 100644 index 0000000..bf7f76a --- /dev/null +++ b/data/features.yaml @@ -0,0 +1,79 @@ +about: + name: Michael Clemens + tagline: Information Security Expert + phone: + email: resume@clemens.name + links: + - title: LinkedIn + url: https://www.linkedin.com/in/m-clemens/ + icon: fab fa-linkedin + - title: Website + url: https://qrz.is + icon: fab fa-globe + - title: Git + url: https://git.qrz.is + icon: fab fa-github + details: | + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ornare sollicitudin fringilla. + Aenean nec volutpat arcu. Maecenas quis tempus risus. Curabitur condimentum ligula in erat pharetra porta. + + Nam suscipit nisi a bibendum lacinia. + + +skills: + - groupName: Security Tools + list: + - Nessus - Qualys - NMap + - Burp - HP Webinspect + - McAfee SIEM + - IntelMQ - MISP + + - groupName: Programming & Systems + list: + - Python - Bash - Git - Docker + - Debian - RHEL - OpenBSD - Windows + +interests: + - Breaking things + - Fixing things + - Amateur Radio + - Everything 8-bit + +languages: + - name: German + level: Native + + - name: English + level: Professional + + - name: French + level: Rudimentary + +# This will use the default widget: "details-list" +awards: + - title: "Tübitak - Graduation Project" + date: "2017" + subtitle: "A Decision Support System for 3D Cutting Problem" + #details: | + # - add more here if you like to. + # - or just comment out/delete the field. + links: + - title: example + url: https://mertbakir.gitlab.io + icon: fas fa-bolt + prefix: "This is an " # use quotation marks if you want to pass the tailing space. + - title: second link. + url: https://esdfdsfdsf + icon: "-" # you can get rid of the icon by entering dummy text + prefix: "omg" + +certificates: + - title: "Supervised Learning: Regression" + subtitle: Coursera + date: "2020" + link: https://xkcd.com/605/ # This link will be on title level. + + - title: "Supervised Learning: Classification" + subtitle: Coursera + date: "2020" + link: https://xkcd.com/388/ diff --git a/data/projects.yaml b/data/projects.yaml new file mode 100644 index 0000000..69d1da3 --- /dev/null +++ b/data/projects.yaml @@ -0,0 +1,69 @@ +projects: +- title: "Development and implementation of a threat intelligence collection and distribution system" + subtitle: "2021 (Python, PostgreSQL)" + date: + details: | + Design, development and implementation of a message pipeline hub for collection and deduplication of IOCs (indicators of compromise) from threat intelligence feeds and threat sharing platforms (eg. MISP) based on IntelMQ. Distribution/Revocation of deduplicated and normalized IOCs (eg. URLs, hashes) to external systems. + +- title: "Development of a solution for the automated creation of use case documentation" + subtitle: "2018 (Python)" + date: + details: | + Development of a python based solution to automatically generate use case and correlation rule documentation in Markdown format for the McAfee Enterprise Security Manager (ESM). + links: + - title: esm2markdown on gitea + url: https://git.qrz.is/clemens/esm2markdown + icon: fab fa-github + +#- title: "Evaluation of an application whitelisting solution" +# subtitle: "2016" +# date: +# details: | +# Evaluation of an application whitelisting solution for a global manufacturing company. + +- title: "Development of a Tivoli Storage Manager monitoring application" + subtitle: "2009 - 2011 (PHP, MySQL)" + date: + details: | + Development of a PHP web application to help IBM Tivoli Storage Manager (TSM) administrators to quickly get reports and health status information of their TSM servers with many users around the world including a big german insurance company. + links: + - title: TSM Monitor on gitea + url: https://git.qrz.is/clemens/tsmmonitor + icon: fab fa-github + +- title: "Personal Side Projects" + subtitle: "Various smaller side projects, not related to any of my employments:" + date: + details: + links: + - title: Hardrock-50 Remote Display - ESP32 based remote display for an amateur radio power amplifier + url: https://qrz.is/hardrock50-remote-display/ + icon: fab fa-github + - title: qrzlogger - Python application to log amateur radio contacts from the command line + url: https://git.qrz.is/clemens/qrzlogger + icon: fab fa-github + - title: pyBMNotify - Python script for monitoring the Brandmeister network and sending push notifications + url: https://git.qrz.is/clemens/pyBMNotify + icon: fab fa-github + - title: qrz.sh - Amateur radio callsign data query script written in Bash + url: https://git.qrz.is/clemens/qrz.sh + icon: fab fa-github + - title: MSTerminology - Translates strings used in all kind of Microsoft products + url: https://git.qrz.is/clemens/MSTerminology + icon: fab fa-github + - title: Nmap-sqlite-output - Nmap NSE script for storing scan results into sqlite3 databases + url: https://git.qrz.is/clemens/nmap-sqlite-output + icon: fab fa-github + - title: Shellfolio - Command line cryptocurrency portfolio manager and price tracker + url: https://git.qrz.is/clemens/shellfolio + icon: fab fa-github + - title: nsd-dyndns - Dynamic DNS for NSD + url: https://git.qrz.is/clemens/nsd-dyndns + icon: fab fa-github + - title: The Laundruino - Washing machine monitoring with an Arduino + url: https://qrz.is/the-arduino-enabled-washing-machine/ + icon: fab fa-github + - title: The One Button Audio Book Player - The one button audiobook player + url: https://qrz.is/the-one-button-audiobook-player/ + icon: fab fa-github + diff --git a/data/publications.yaml b/data/publications.yaml new file mode 100644 index 0000000..3115d39 --- /dev/null +++ b/data/publications.yaml @@ -0,0 +1,26 @@ +- authors: + - last_name: McManus + first_name: Sean + - last_name: Cook + first_name: Mike + date: "2013" + title: "Raspberri Pi for Dummies" + journal: One-Button Audiobook Player as one of 'Ten Inspiring Projects for the Raspberry Pi' + page: "371-372" +- authors: + date: "2013" + title: Linux User & Developer Magazine + journal: "10 amazing Raspberry Pi projects - The one-button audio player" + page: "26" +- authors: + - last_name: Clemens + first_name: Michael + date: "2012" + title: "Menschengemachte Schwachstellen auf der Hack.lu 2012" + journal: iX 12/2012 +- authors: + - last_name: Donath + first_name: Andreas + date: "2011" + title: "Laundruino - Waschmaschine mit Onlineanschluss" + journal: https://www.golem.de/1108/85541.html diff --git a/public b/public new file mode 120000 index 0000000..d7615ae --- /dev/null +++ b/public @@ -0,0 +1 @@ +/var/www/resume.clemens.name/ \ No newline at end of file diff --git a/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content new file mode 100644 index 0000000..7ec9b82 --- /dev/null +++ b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.content @@ -0,0 +1 @@ +*{margin:0;padding:0}body{background:#fff;color:#202020;font-family:pt sans,ibm plex sans,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none;color:#202020}a i{padding:0 .2rem 0 .25rem}a:hover{text-decoration:underline}a:not(.no-external-icon)::after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);margin:0 .2rem 0 .25rem}li{list-style-type:square;padding-left:0;list-style-position:inside;margin:.5rem 0}*::-webkit-scrollbar{width:12px;height:8px}*::-webkit-scrollbar-thumb{background-color:#b56b00;outline:1px solid #b56b00}*::-webkit-scrollbar-track{background-color:#ffe1b5}::selection{background:#b56b00;color:#fff}::-moz-selection{background:#b56b00;color:#fff}.paper{position:relative;margin:.5rem auto;padding:.45in .5in;width:210mm;height:297mm;background-color:#fff;-webkit-box-shadow:.2rem .2rem .6rem #aaa;-moz-box-shadow:.2rem .2rem .6rem #aaa;box-shadow:.2rem .2rem .6rem #aaa;box-sizing:border-box;font-size:.88rem}.paper h1,.paper h2,.paper h3{line-height:1.2}.paper h1{margin-bottom:.8rem;font-size:1.5rem}.paper h2{margin-bottom:.4rem;font-size:1.1rem}.paper h3{margin-bottom:.2rem;font-size:1rem}.paper p{margin:.5rem 0;font-size:.88rem;line-height:1.5;text-align:justify}.paper>*:first-child{margin-top:0}main.paper{margin-top:2.5rem;padding-top:0}main.paper .grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);grid-column-gap:0;grid-row-gap:0}main.paper .grid .flex-row{display:flex;flex-direction:row;justify-content:space-between}main.paper header{grid-area:1/1/2/8;border-bottom:#bfbfbf .05rem solid;height:12.75rem}main.paper header .title{display:flex;flex-direction:column;justify-content:center;font-family:pt sans,ibm plex sans,arial,sans-serif}main.paper header .title h1{margin-bottom:.4rem;font-size:2.5rem;color:#202020;letter-spacing:.15rem;text-transform:uppercase}main.paper header .title h2{margin-bottom:.3rem;font-size:1rem}main.paper header .avatar{display:block;margin:1rem auto;padding:1rem;object-fit:cover;height:8.75rem;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%}main.paper header a i{padding:0}main.paper .left-column,main.paper .right-column{margin-top:.75rem}main.paper .left-column>*:first-child,main.paper .left-column>*:first-child>*:first-child,main.paper .right-column>*:first-child,main.paper .right-column>*:first-child>*:first-child{margin-top:0}main.paper .left-column{grid-area:2/1/7/6;display:flex;flex-direction:column;justify-content:flex-start;border-right:#bfbfbf .05rem solid;padding-right:1rem}main.paper .right-column{grid-area:2/6/7/8;display:flex;flex-direction:column;justify-content:flex-start;margin-left:.5rem}main.paper .right-column li{list-style-type:none;padding:0}main.paper .right-column h1{margin-bottom:.5rem;font-size:1.2rem}main.paper .right-column h2{margin-bottom:.2rem;font-size:1rem}main.paper .right-column h3{margin-bottom:.1rem;font-size:.8rem}main.paper .right-column p{font-size:.8rem;line-height:1.3}.section{margin-bottom:1.5rem}.section>*:last-child{margin-bottom:0}.right-column .section{margin-bottom:1rem}.section-title{border-left:solid .35rem #202020;padding-left:.4rem;font-family:pt sans,ibm plex sans,arial,sans-serif}.item{margin-bottom:.6rem}.item dl dt{display:inline;font-weight:600}.item dl dt::after{content:': '}.item dl dd{display:inline}.item dl dd:not(:last-child)::after{content:"";display:block;margin-bottom:.4em}.item dl dd *:not(:last-child)::after{content:"; ";margin-right:.25rem}.item.group .item{margin-top:0}.item-title{font-weight:600;margin-bottom:2px}.item-info{font-weight:400;font-size:12px}.job-title{font-size:14px;font-weight:700}.date{color:#636363}main.paper .right-column .section-education h2,main.paper .left-column .section-education h2,.paper .section-education h2{margin-bottom:0;font-size:1rem}main.paper .right-column .section-languages .item,main.paper .left-column .section-languages .item,.paper .section-languages .item{margin-bottom:.4rem}main.paper .right-column .section-languages h2,main.paper .left-column .section-languages h2,.paper .section-languages h2{margin-bottom:.1rem;font-size:.9rem;line-height:1.1}main.paper .right-column .section-languages h2 span,main.paper .left-column .section-languages h2 span,.paper .section-languages h2 span{font-weight:400;font-size:.8rem}footer{width:8.25in;margin:36px auto;text-align:center;display:flex;flex-flow:column}footer .footer-item{margin-bottom:.5rem}footer .footer-item a{color:#e30a17;padding:0 4px}footer .footer-item a span{font-weight:700}footer .footer-item a:hover{color:#fff;background-color:#e30a17;text-decoration:none;transition:all .35s ease-out;transition-property:all .35s ease-out;-webkit-transition-property:all .35s ease-out;-moz-transition-property:all .35s ease-out;-o-transition-property:all .35s ease-out}footer .footer-item .footer-link:not(:last-child)::after{content:"\00B7"}@media print{@page{size:A4;margin:0}html,body{background:#fff;margin:0;padding:0}.paper,main.paper{margin:0;width:210mm;height:297mm;overflow:hidden;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;page-break-after:always}a{text-decoration:none}footer{display:none}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json new file mode 100644 index 0000000..a5ca9c5 --- /dev/null +++ b/resources/_gen/assets/scss/css/main.scss_48b060fe05b0a273d182ef83c0605941.json @@ -0,0 +1 @@ +{"Target":"css/main.min.d00ec764eee10198edc1c0a0424ca1e17f4d114ecff6fdd8b8ae20bff237295c.css","MediaType":"text/css","Data":{"Integrity":"sha256-0A7HZO7hAZjtwcCgQkyh4X9NEU7P9v3YuK4gv/I3KVw="}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content new file mode 100644 index 0000000..327b797 --- /dev/null +++ b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.content @@ -0,0 +1 @@ +*{margin:0;padding:0}body{background:#fff;color:#202020;font-family:pt sans,ibm plex sans,arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:underline;color:#202020}a i{padding:0 .2rem 0 .25rem}a:hover{text-decoration:underline;color:red}a:not(.no-external-icon)::after{content:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);margin:0 .2rem 0 .25rem}li{list-style-type:square;padding-left:0;list-style-position:inside;margin:.5rem 0}*::-webkit-scrollbar{width:12px;height:8px}*::-webkit-scrollbar-thumb{background-color:#b56b00;outline:1px solid #b56b00}*::-webkit-scrollbar-track{background-color:#ffe1b5}::selection{background:#b56b00;color:#fff}::-moz-selection{background:#b56b00;color:#fff}.paper{position:relative;margin:.5rem auto;padding:.45in .5in;width:210mm;height:297mm;background-color:#fff;-webkit-box-shadow:.2rem .2rem .6rem #aaa;-moz-box-shadow:.2rem .2rem .6rem #aaa;box-shadow:.2rem .2rem .6rem #aaa;box-sizing:border-box;font-size:.88rem}.paper h1,.paper h2,.paper h3{line-height:1.2}.paper h1{margin-bottom:.8rem;font-size:1.5rem}.paper h2{margin-bottom:.4rem;font-size:1.1rem}.paper h3{margin-bottom:.2rem;font-size:1rem}.paper p{margin:.5rem 0;font-size:.88rem;line-height:1.5;text-align:justify}.paper>*:first-child{margin-top:0}main.paper{margin-top:2.5rem;padding-top:0}main.paper .grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);grid-column-gap:0;grid-row-gap:0}main.paper .grid .flex-row{display:flex;flex-direction:row;justify-content:space-between}main.paper header{grid-area:1/1/2/8;border-bottom:#bfbfbf .05rem solid;height:12.75rem}main.paper header .title{display:flex;flex-direction:column;justify-content:center;font-family:pt sans,ibm plex sans,arial,sans-serif}main.paper header .title h1{margin-bottom:.4rem;font-size:2.5rem;color:#202020;letter-spacing:.15rem;text-transform:uppercase}main.paper header .title h2{margin-bottom:.3rem;font-size:1rem}main.paper header .avatar{display:block;margin:1rem auto;padding:1rem;object-fit:cover;height:8.75rem;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;-o-border-radius:50%;border-radius:50%}main.paper header a i{padding:0}main.paper .left-column,main.paper .right-column{margin-top:.75rem}main.paper .left-column>*:first-child,main.paper .left-column>*:first-child>*:first-child,main.paper .right-column>*:first-child,main.paper .right-column>*:first-child>*:first-child{margin-top:0}main.paper .left-column{grid-area:2/1/7/6;display:flex;flex-direction:column;justify-content:flex-start;border-right:#bfbfbf .05rem solid;padding-right:1rem}main.paper .right-column{grid-area:2/6/7/8;display:flex;flex-direction:column;justify-content:flex-start;margin-left:.5rem}main.paper .right-column li{list-style-type:none;padding:0}main.paper .right-column h1{margin-bottom:.5rem;font-size:1.2rem}main.paper .right-column h2{margin-bottom:.2rem;font-size:1rem}main.paper .right-column h3{margin-bottom:.1rem;font-size:.8rem}main.paper .right-column p{font-size:.8rem;line-height:1.3}.section{margin-bottom:1.5rem}.section>*:last-child{margin-bottom:0}.right-column .section{margin-bottom:1rem}.section-title{border-left:solid .35rem #202020;padding-left:.4rem;font-family:pt sans,ibm plex sans,arial,sans-serif}.item{margin-bottom:.6rem}.item dl dt{display:inline;font-weight:600}.item dl dt::after{content:': '}.item dl dd{display:inline}.item dl dd:not(:last-child)::after{content:"";display:block;margin-bottom:.4em}.item dl dd *:not(:last-child)::after{content:"; ";margin-right:.25rem}.item.group .item{margin-top:0}.item-title{font-weight:600;margin-bottom:2px}.item-info{font-weight:400;font-size:12px}.job-title{font-size:14px;font-weight:700}.date{color:#636363}main.paper .right-column .section-education h2,main.paper .left-column .section-education h2,.paper .section-education h2{margin-bottom:0;font-size:1rem}main.paper .right-column .section-languages .item,main.paper .left-column .section-languages .item,.paper .section-languages .item{margin-bottom:.4rem}main.paper .right-column .section-languages h2,main.paper .left-column .section-languages h2,.paper .section-languages h2{margin-bottom:.1rem;font-size:.9rem;line-height:1.1}main.paper .right-column .section-languages h2 span,main.paper .left-column .section-languages h2 span,.paper .section-languages h2 span{font-weight:400;font-size:.8rem}footer{width:8.25in;margin:36px auto;text-align:center;display:flex;flex-flow:column}footer .footer-item{margin-bottom:.5rem}footer .footer-item a{color:#e30a17;padding:0 4px}footer .footer-item a span{font-weight:700}footer .footer-item a:hover{color:#fff;background-color:#e30a17;text-decoration:none;transition:all .35s ease-out;transition-property:all .35s ease-out;-webkit-transition-property:all .35s ease-out;-moz-transition-property:all .35s ease-out;-o-transition-property:all .35s ease-out}footer .footer-item .footer-link:not(:last-child)::after{content:"\00B7"}@media print{@page{size:A4;margin:0}html,body{background:#fff;margin:0;padding:0}.paper,main.paper{margin:0;width:210mm;height:297mm;overflow:hidden;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;page-break-after:always}a{text-decoration:none}footer{display:none}} \ No newline at end of file diff --git a/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json new file mode 100644 index 0000000..f1a333a --- /dev/null +++ b/resources/_gen/assets/scss/resume/css/main.scss_48b060fe05b0a273d182ef83c0605941.json @@ -0,0 +1 @@ +{"Target":"css/main.min.21500104e30855acedd2e664b0895af1b40370d4bf80a8335a3234490317809f.css","MediaType":"text/css","Data":{"Integrity":"sha256-IVABBOMIVazt0uZksIla8bQDcNS/gKgzWjI0SQMXgJ8="}} \ No newline at end of file diff --git a/static/avatar.jpg b/static/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a1360283473b5cfe4aa0ddfcf1c27eb0c602f681 GIT binary patch literal 14435 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