initial commit

This commit is contained in:
Michael Clemens 2022-02-03 12:13:05 +01:00
commit dcd46d5f7a
20 changed files with 645 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
public/*

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "themes/resume-a4"]
path = themes/resume-a4
url = https://gitlab.com/mertbakir/resume-a4.git

0
.hugo_build.lock Normal file
View File

6
archetypes/default.md Normal file
View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

38
assets/css/_base.scss Normal file
View File

@ -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;
}

159
assets/css/_layout.scss Normal file
View File

@ -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;
}
}
}

101
assets/css/_section.scss Normal file
View File

@ -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;
}
}
}
}

101
config.yaml Normal file
View File

@ -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-<widget>.html` used to render this element.
#
# Common widgets:
#
# details-list:
# Used by default, if section-<feature>.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

7
data/education.yaml Normal file
View File

@ -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"

49
data/experience.yaml Normal file
View File

@ -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"

79
data/features.yaml Normal file
View File

@ -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/

69
data/projects.yaml Normal file
View File

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

26
data/publications.yaml Normal file
View File

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

1
public Symbolic link
View File

@ -0,0 +1 @@
/var/www/resume.clemens.name/

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"Target":"css/main.min.d00ec764eee10198edc1c0a0424ca1e17f4d114ecff6fdd8b8ae20bff237295c.css","MediaType":"text/css","Data":{"Integrity":"sha256-0A7HZO7hAZjtwcCgQkyh4X9NEU7P9v3YuK4gv/I3KVw="}}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"Target":"css/main.min.21500104e30855acedd2e664b0895af1b40370d4bf80a8335a3234490317809f.css","MediaType":"text/css","Data":{"Integrity":"sha256-IVABBOMIVazt0uZksIla8bQDcNS/gKgzWjI0SQMXgJ8="}}

BIN
static/avatar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

1
themes/resume-a4 Submodule

@ -0,0 +1 @@
Subproject commit 661a99622c2259ca20b3aa4a11b202e8d6bc6b40